脚本的使用规则

U3D的脚本作用方式很有趣,我称之为“拖放法”。无论是作用在一个具体的场景物体还是管理着批量的物体,脚本首先必须依附于场景中的一个元素才能被执行。要将脚本赋予物体的方式很简单,就是按住鼠标左键将脚本文件拖放到物体的属性面板上(也可以拖放到场景的物体上)。U3D有个概念,那就是component(成分)--类似Maya的节点。包括脚本,所有元素属性都是游戏物体的component。添加、删除、停用、读取、写入component信息,就是脚本所要做的(尽管脚本也是个component)。

net语言的C#,在不同脚本之间调用变量和方法时,如果脚本位于同一路径下,那么只需要对非static(静态)成员进行new实例化即可。例如a.cs和b.cs,要调用脚本a中的一个非静态变量cc,需要在脚本b中写入:a c=new a(),然后c.cc的格式完成调用。不过,作为一个component,要调用不同脚本之间的成员,U3D的规则是使用GetComponent函数来完成(其实也就相当于new的作用,只是U3D不支持这种脚本间调用的写法)。如:

someScript = GetComponent<ExampleScript>();

如果是在C#脚本中调用JavaScript脚本,则使用强制类型转换语法:

someScript = GetComponent(“ExampleScript”) as ExampleScript ;

<>这个特殊的符号表示使用的是C#中的泛型功能,用于避免强制类型的转换,减少装箱量(将值类型专为引用类型的操作)。

根据脚本使用的情况,可以有以下做法:

1.脚本位于同一个物体上。 可直接使用泛型或者类型转换语法调用。如:

someScript = GetComponent<ExampleScript>();

2.脚本位于不同物体上。 需要使用Find或相关的搜索函数,取得指定名称的物体信息后,再+”.GetComponent”函数。如:

GameObject.Find("stone").GetComponent<ExampleScript>()。

3.脚本位于同一路径或者被调用脚本位于主脚本的路径及以下(脚本是否被物体使用都可)。将被调用脚本中的成员(变量或方法)使用static标识,然后可以通过”脚本.成员”的格式直接调用。例如:

ScriptA.CS
…
public static mm();
…
ScriptB.CS
…
ScriptA.mm();
…

不过,static成员的调用虽然提高了效率,但因为它常驻内存,所以在会产生大量系统资源要求的情况下要慎用。 static是C#定义变量或方法类型的关键字,使用static的变量或方法,不需要new实例化即可直接调用。

results matching ""

    No results matching ""