Unity C#将脚本存储在变量中

时间:2016-05-29 00:48:12

标签: c# unity3d

我可以将GameObject存储在变量中,例如:

GameObject Target = SomeGameobject; 

我如何为脚本执行此操作?

SomeVariableDefinition TargetStatus = Target.GetComponent<Status>();

变量是什么?有这样的事吗?

提前致谢,抱歉英语不好。

2 个答案:

答案 0 :(得分:1)

就像存储游戏对象一样,您也可以保存任何脚本。

GameObject Target = SomeGameobject; //Gameobject sotre

你需要记住,游戏对象也是一个脚本。

Status TargetStatus = Target.GetComponent<Status>();//Status script ref store in TargetStatus Variable

变量类型应该与指定的对象类型(在我们的示例中为脚本名称)

兼容

答案 1 :(得分:0)

我假设您正在询问如何获取附加到另一个GameObject的脚本的引用。

你几乎是对的。左侧的类型和GetComponent中的类型必须匹配。

SomeVariableDefinition TargetStatus = Target.GetComponent<SomeVariableDefinition>();

OR

Status TargetStatus = Target.GetComponent<Status>();

了解如果Target GameObject没有您想要访问的脚本,它将返回null。

下面是完整的示例如何从另一个脚本访问另一个脚本实例,变量或函数。

public class ScriptA : MonoBehaviour{

    public int playerScore = 0;

    void Start()
    {

    }

    public void doSomething()
    {

    }
}

现在,您可以ScriptAScriptB访问public class ScriptB : MonoBehaviour{ ScriptA scriptInstance = null; void Start() { GameObject tempObj = GameObject.Find("NameOfGameObjectScriptAIsAttachedTo"); scriptInstance = tempObj.GetComponent<ScriptA>(); //Access playerScore variable from ScriptA scriptInstance.playerScore = 5; //Call doSomething() function from ScriptA scriptInstance.doSomething(); } } 中的变量playerScore。

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>InvalidPolicyDocument</Code>
<Message>Invalid Policy: Invalid JSON.</Message>
<RequestId>2F09C5449F42E3AF</RequestId>
<HostId>m++SN+V5bjFFkG0Qa5ceDveS5bBSvjFhcXANlyf2Ay11Llld3EEa54cT7rpg0cjhKLA0ItrnPgg=</HostId>
</Error>