Unity如何与C#类一起使用

Sni*_*nik 7 c# unity-game-engine

通过研究纯C#,我发现Unity中的脚本(使用C#)有点不直观.

例如,似乎人们(初学者?)在Unity中使用脚本的最常见方式是创建"单一用途"类型脚本并将其附加到实际游戏对象(通过单击并将其拖动到脚本组件).以这种方式,似乎很少用于继承.或许我倒退了.我应该在附加到游戏对象之外创建类/继承,然后只将脚本附加到引用那些外部类的游戏对象吗?我相信你们中的一些人可能只会说"做你想做的事!" 或"做什么有效",但我不想从糟糕的编码方法开始,只是为了最后重构它.

我很困惑的另一件事是Unity中的类实例.无论出于何种原因,似乎我可以使用像Animator这样的内置类而无需实例化它[我几乎从未见过一个=新的Class(); ]然而这些类不是静态的.这是如何运作的?如果我构建自己的游戏对象引用的类,我是否必须创建与它们一起工作的实例,或者这一切都是由引擎在引擎盖下完成的吗?

所有这些脚本中的游戏对象(编辑器中的实际项目)在哪里?是否有为每个游戏对象制作的类?而且,如果是这样,我如何找到它并偷看它发生了什么?

Ima*_*ler 1

我已经制作了一些 Unity 游戏,根据我的经验,继承几乎没有用。这是因为统一不是考虑到 oop 而是面向组件的编程,即您制作小型的单一用途组件(脚本)并将它们粘贴在一起以制作您的游戏对象。

当您将脚本添加到游戏对象时,引擎会执行 new Class(); 为你工作。这意味着每个游戏对象都有一个附加到它的每个脚本的实例。对于所有脚本都是如此,无论是您制作的脚本还是已经统一的脚本(例如 Transform 和 Animator)。当然,这只适用于从 MonoBehaviour 继承的 Unity 脚本,因为它们是您可以添加到游戏对象的唯一内容。

您在场景层次结构中看到的游戏对象是 GameObject 类的实例。要了解它是如何工作的,我建议只阅读文档,但如果您想查看游戏对象,您需要使用 Telrik JustDecompile 或 Reflector 等工具对其进行分解。