Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查另一个对象的变量并调用其方法?_C#_Unity3d - Fatal编程技术网

C# 如何检查另一个对象的变量并调用其方法?

C# 如何检查另一个对象的变量并调用其方法?,c#,unity3d,C#,Unity3d,我正在Unity3d中使用触发器。我有一个对进入触发器的另一个对象的引用,如果该对象有一个设置为值的变量,那么我想调用它自己的方法 大致如下: if(gameObject.hasAttribute('canDance') == true) { gameObject.dance(); } 执行此类操作的正确代码是什么 您需要对附加到游戏对象的脚本的引用。我假设你已经找到了游戏对象,并持有一个名为myGameObject的引用。如果您不知道如何找到它,您可以这样做: GameObject

我正在Unity3d中使用触发器。我有一个对进入触发器的另一个对象的引用,如果该对象有一个设置为值的变量,那么我想调用它自己的方法

大致如下:

if(gameObject.hasAttribute('canDance') == true) 
{
    gameObject.dance();
}

执行此类操作的正确代码是什么

您需要对附加到游戏对象的脚本的引用。我假设你已经找到了游戏对象,并持有一个名为
myGameObject
的引用。如果您不知道如何找到它,您可以这样做:

GameObject myGameObject = GameObject.Find("Name Of GameObject in Scene");
ScriptName script = myGameObject.GetComponent<ScriptName>();
现在,要获取脚本,您可以执行以下操作:

GameObject myGameObject = GameObject.Find("Name Of GameObject in Scene");
ScriptName script = myGameObject.GetComponent<ScriptName>();

迈克,你需要访问脚本,比如
YOURSCRIPT ys=theObject.getComponent()
和更高版本的
if(ys.canDance)ys.dance()
。我不太明白我的情况下“YOURSCRIPT”是什么。脚本有类型吗?是的,如果您使用
c#
,类型是类的名称,例如,如果您有类似这样的脚本:
class Dancer{bool canDance;void dance(){}
Dancer
是类型,并且您需要
theObject.getComponent().dance()有很多方法可以访问其他对象的变量:这很好,但还有另一个问题。由于并非所有对象都会在
dance()
上执行相同的操作,因此我无法将相同的脚本附加到所有对象,因此我认为所有对象的类型也会不同。那么我该如何处理这个问题,这样我就可以检查变量并调用方法,而不管脚本类型如何?