Unity MonoBehaviour Objects vs Game Logic

本文关键字:Game Logic vs Objects MonoBehaviour Unity | 更新日期: 2023-09-27 18:20:31

我昨天最初在Unity Answer论坛上发布了这个,但到目前为止还没有得到任何回应。所以我想我会在这里碰碰运气。

所以我有点像 Unity 的菜鸟。我从Unity 3开始涉足它,但从未真正做出任何建设性或值得一提的事情。在获得计算机科学学位后,我的职业是 C#、ASP.NET 和 JAVA 程序员超过 5 年。所以我想抛出我确实理解OOP。所以打我这里有什么硬道理。

我的问题是,我想知道创建类层次结构时的标准做法,以及它们应该如何扩展或绑定到 MonoBehavior 类中。

这是我在层次结构中的特定情况:

IPickupable (interface) > Item : Monobehaviour, IPickupable > Weapon : Item, IEquipable (interface) > Sword : Weapon

这就是我现在所拥有的。我将 MonoBehavior 放在类结构的最底层,这样当我创建一个新的 Sword(( 对象时,我必须使用 Start((。

我感到困惑的问题,到处都是,指出你不应该在你的类中使用派生自 MonoBehavior 的构造函数。好吧,当我从数据库创建项目字典时,我想创建一堆剑的实例,并将它们存储在集合中。这一切都发生在代码中,实际上没有任何东西在屏幕上呈现或在游戏中发生。

构建我的类结构,使所有游戏逻辑都包含在普通类中会更有益吗 - 然后有一个使用我最顶层逻辑类的顶级类。例如,我上面的例子会变成这样:

SwordObject : Monobehaviour 
private Sword sword;

这样,将附加到游戏对象的实际脚本仍然可以访问所有 sword 方法和数据成员,但我的类可以随时随地实例化。

我目前正在与恶魔们争论如何解决这个问题,我想看看是否有更有经验的游戏逻辑和Unity程序员可以帮助我完成一些最佳实践。我是一名业务逻辑程序员,每天只处理会计问题、API、移动开发和网页设计,所以游戏逻辑对我来说是全新的。提前感谢您的帮助、见解、建议和反馈!

Unity MonoBehaviour Objects vs Game Logic

我感到困惑的问题,到处都是,指出你不应该在你的类中使用派生自 MonoBehavior 的构造函数。

Unity 希望充当从 UnityEngine.Object 继承的所有对象的工厂,其中包括所有游戏对象、组件、行为脚本等。

在许多情况下,与之交互的 .NET 对象更像是引擎实际使用的基础C++对象的填充程序。直接调用其中一个构造函数将创建一个从其C++内部孤立的 .NET 对象。

所有这些都隐藏在视图中,以便初学者更容易访问 Unity。他们不会说"嘿,使用这种工厂模式来构建组件",而是告诉您调用AddComponent。只要你让Unity处理这些对象的初始化,所有这些都是(大部分(透明和无缝的。

因此,听起来您正在考虑创建一些 POCO 类来存储配置数据。没关系,我一直都在这样做。只需确保在类和 Unity 原生类之间保持分离即可。