【发布时间】:2018-11-02 00:45:29
【问题描述】:
示例:游戏对象 A 附加了一个名为 MakeItRain 的脚本。该脚本内部是一个 public void Drizzle();
GameObject B 也有一个脚本,想告诉 MakeItRain 做 Drizzle();
在 GameObject B 的脚本中,我可以这样做:
public GameObject makeitrain;
然后我必须使用 GetComponent 来到达 Drizzle();在我的代码中。 在检查器中,我将 GameObject A 放入 makeitrain 的插槽中,然后就完成了。
但是,我也可以在 GameObject B 的脚本中执行此操作:
public MakeItRain makeitrain;
然后在我的 GameObject B 脚本代码中调用 makeitrain.Drizzle();,不使用 GetComponent。
在这两种情况下,在 Inspector 中,我都必须将 GameObject A 拖放到 GameObject B 的插槽中。
我绝对不应该选择最后一个选项有什么不同或原因吗?我知道第一种方法给了我更大的灵活性,因为我也可以调用 GameObject A 的其他组件,而不仅仅是脚本的东西。只是想知道不使用第二种方法是否还有其他理由。
【问题讨论】:
-
这完全取决于您的客户端代码(我想是脚本 A)是要直接使用游戏对象还是游戏对象的附加脚本组件。第二种方法没有提供第一种方法提供的一件事是强类型。我个人尽量避免在原版游戏对象之间出现过多的“意大利面条式”跨对象/脚本/组件引用;强类型在这里可以提供帮助。