请问下unity如何从一个物体的脚本中获得另一个物体的组件?
我想按一个按钮后获得输入框中的值,输入框取名叫InputField1,第一步想获得输入框中的Text组件,主要代码是这样:publicTextt1;publicvoidC...
我想按一个按钮后获得输入框中的值,输入框取名叫InputField1,第一步想获得输入框中的Text组件,主要代码是这样:
public Text t1;
public void Click()
{
t1=GetComponent(Text);
}
然后就果然报错了....是不是因为代码不知道获取哪里的Text?我怎么写才能体现出是去获得InputField1的Text呢? 展开
public Text t1;
public void Click()
{
t1=GetComponent(Text);
}
然后就果然报错了....是不是因为代码不知道获取哪里的Text?我怎么写才能体现出是去获得InputField1的Text呢? 展开
1个回答
展开全部
不太清楚实际情况,但是,
(1)你这样写的前提是,A 和 B 必须同时实例化到同一个gameObject上(这两个脚本得同时应用到一个物体上),否则你的a = GetComponent<A>()肯定为null ,因为B调用这个Get,而他本身所处的gameObject本没有A这个脚本组件,A的实例在另一个物体上。 估计这是你报错的一个原因。
(2)用static声明全局变量似乎没必要,static的作用应该是让变量在类被实例之前就得到实例化。用static的话,那么应该是要达到这样的目的,即用类名直接调用变量或函数(Mathf类里面的很多数学数值和函数都是这样的例子),你这个情况如果用了static那就最好应该为了这样的目的:
A.Roadnode.count
(3)实时操作数组,最好用List<>,具体可以参考msdn List的用法,
(4)如果你的目的只是为了让B能够通过代码访问A的变量,一般的public 变量就足够,其余你只需要解决B通过何种途径正确访问A。比如,你可以把A做成singleton:
static A instance;
(1)你这样写的前提是,A 和 B 必须同时实例化到同一个gameObject上(这两个脚本得同时应用到一个物体上),否则你的a = GetComponent<A>()肯定为null ,因为B调用这个Get,而他本身所处的gameObject本没有A这个脚本组件,A的实例在另一个物体上。 估计这是你报错的一个原因。
(2)用static声明全局变量似乎没必要,static的作用应该是让变量在类被实例之前就得到实例化。用static的话,那么应该是要达到这样的目的,即用类名直接调用变量或函数(Mathf类里面的很多数学数值和函数都是这样的例子),你这个情况如果用了static那就最好应该为了这样的目的:
A.Roadnode.count
(3)实时操作数组,最好用List<>,具体可以参考msdn List的用法,
(4)如果你的目的只是为了让B能够通过代码访问A的变量,一般的public 变量就足够,其余你只需要解决B通过何种途径正确访问A。比如,你可以把A做成singleton:
static A instance;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询