创造你的世界
脚本编写
$ref & $unref
5分
该 ref 和 out 关键字在 c# 中用于将变量或结构的引用传递给方法。 在 typescript 中,这些关键字不可用,但在 zepetoscript 中,您可以使用 $ref 和 $unref 。 函数 描述 $ref(x?\ t) $ref 为参数创建引用 $unref(x $ref)\ t 释放参数的引用并返回原始值 例如,让我们设置一个场景如下: 将一个3d对象,立方体,添加到场景中。 在添加的立方体的检查器中,点击“添加组件”并添加一个刚体。 将一个空的 gameobject 添加到场景中。 编写下面的 refsample 脚本并将其添加到步骤 3 中创建的 gameobject。 import { gameobject, rigidbody } from 'unityengine' import { zepetoscriptbehaviour } from 'zepeto script' import testscript from ' /testscript'; export default class refsample extends zepetoscriptbehaviour { start() { // 获取名为 "cube" 的 gameobject const testobject = gameobject find("cube"); // 从 "cube" 对象获取 rigidbody 组件 const testcomponent = gameobject find("cube") getcomponent\<rigidbody>(); // 从 "cube" 对象获取 testscript 组件 const testscript = gameobject find("cube") getcomponent\<testscript>(); // 创建对组件和对象的引用 let tempobj = $ref(testobject); let tempcomponent = $ref(testcomponent); let tempscript = $ref(testscript); // 检查 rigidbody 组件是否不为 null if(tempcomponent != null) { // 访问该引用的实际值 let component = $unref(tempcomponent); console log(`组件名称 ${component}`); } // 检查 testscript 组件是否不为 null if(tempscript != null) { // 访问该引用的实际值 let script = $unref(tempscript); script dotest(); } // 检查 gameobject 引用是否不为 null if(tempobj != null) { // 访问该引用的实际值 let objname = $unref(tempobj); console log(`tempobj 名称 ${objname name}`); } } } 创建另一个 zepetoscript 并编写下面的 testscript。 import { zepetoscriptbehaviour } from 'zepeto script' export default class testscript extends zepetoscriptbehaviour { dotest() { console log(`testscript's dotest() is executed `); } } 拖动并将 testscript 连接到 cube 的 inspector。 点击 \[▶︎(播放)] 按钮以观察结果。 您可以在控制台日志窗口中检查引用对象、rigidbody 组件和 zepetoscript 组件的成功情况。