最近看一些代码,经常需要在一个脚本中调用其他脚本中的属性或方法,有两种调用方法:
一种直接用ClassName.method(),
另一种用ClassName cn=(ClassName)FindObjectOfType (typeof(ClassName)); cn.method();
这两种方法区别:
第一种要调用的方法或属性需要声明为static,否则编译不通过。这个类没有实例化,只是放在游戏中单独的一块内存中,当然Awake(), Start()等相关函数也不会自动执行。
第二种要调用的方法或属性不能声明为static,否则编译不通过。这个类被游戏对象绑定了,已经实例化,代码存放在被绑定的游戏对象区域,所调用的属性或方法跟这个对象有关。
如在游戏中如需保存一些全局设置,要么直接写一个脚本,不跟任何对象绑定,将脚本中变量声明为非static;
或者创建一个空对象,然后绑定一个脚本,脚本中的变量声明为static。
不知道这两种方法有木有区别,欢迎补充。