你的意思是另一个脚本也可以更改和调用这个变量吗? 如果是这样的话,你可以参考下面这个脚本: public class friendInfo : object { int stat; public void setStat(int a) { stat = a; } public int getStat() { return stat; } } 其他脚本就
继承了MonoBehaviour的类是不需要你去实例化的,挂在GameObject上有awake和start会走unity的实例化MonoBehaviour的流程。所以你继承了MonoBehaviour的类加泛型是没有意义的。GetComponent<T>的T就是组件类型,比如Transform,你就理解为MonoBehaviour获得泛型组件的方法。unity的GetComponent<T>中的T都是继承自MonoBehaviour
不太清楚实际情况,但是,
(1)你这样写的前提是,A 和 B 必须同时实例化到同一个gameObject上(这两个脚本得同时应用到一个物体上),否则你的a = GetComponent<A>()肯定为null ,因为B调用这个Get,而他本身所处的gameObject本没有A这个脚本组件,A的实例在另一个物体上。 估计这是你报错的一个原因。
(2)用static声明全局变量似乎没必要,static的作用应该是让变量在类被实例之前就得到实例化。用static的话,那么应该是要达到这样的目的,即用类名直接调用变量或函数(Mathf类里面的很多数学数值和函数都是这样的例子),你这个情况如果用了static那就最好应该为了这样的目的:
ARoadnodecount
(3)实时 *** 作数组,最好用List<>,具体可以参考msdn List的用法,
(4)如果你的目的只是为了让B能够通过代码访问A的变量,一般的public 变量就足够,其余你只需要解决B通过何种途径正确访问A。比如,你可以把A做成singleton:
static A instance;
对于静态Script(可以不继承MonoBehiviour)
直接用 脚本名函数名(参数); 调用即可
对于组件
如果是静态成员,同上
如果是动态成员,可以用GetComponent<脚本名称>()来获取此脚本的类
也就是使用 GetComponent<脚本名称>()函数名(参数);调用
注意:上述其实省略了一个this对象,表示本身,意思是说你用
GetComponent<脚本名称>() 获取的对象是此脚本所挂载的对象上的此C#脚本对象
如果你要调用其他物体的脚本的成员,请使用ObjGetComponent<脚本名称>()函数名(参数);这里Obj指的是其他物体的GameObject对象
以上就是关于Unity怎么获得另一个脚本中字典里的ID全部的内容,包括:Unity怎么获得另一个脚本中字典里的ID、unity3d脚本中如何让GetComponent<T>()获得泛型方法里的T类型脚本、请问下unity如何从一个物体的脚本中获得另一个物体的组件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)