在我自己的脚本和单声道行为之间创建一个类是一个好习惯吗?

失去现实

因此,我已将 绑定CombatController到一个名为“godObject”的对象。Start()方法中,我调用init()了其他类上的函数。我这样做是为了控制对象初始化的顺序,因为例如,角色控制器依赖于正在初始化的网格控制器。

快速图:

--------------------   calls 
| CombatController | ----------> CameraController.init(); 
--------------------      |
                          | ---> GridController.init();
                          |
                          | ---> CharacterController.init();

所以,现在我有一个小问题。我在每个控制器中都需要多个属性。目前,我已将所有内容绑定到战斗控制器本身。这意味着,在每个控制器中,我必须通过GameObject.Find("godObject).GetComponent<CombatController>(). 老实说,我认为这不是一个好的设计。

我现在的想法是创建一个BaseCombatController扩展的类MonoBehavior,然后让所有其他类(例如GridControllerCharacterController等等)扩展BaseCombatController. 它可能看起来像这样:

public class BaseCombatController : MonoBehaviour
{
    public GameObject activePlayer;

    public void setActivePlayer(GameObject player) {
        this.activePlayer = player;
    }

    ... more stuff to come ...
}

这样,我可以访问activePlayer任何地方,而无需创建CombatController. 但是,我不确定这是否没有可能的副作用。

那么,一个简单问题的大量文本,这样做安全吗?

阿里游戏

我一直在 Unity 中使用继承。就像你在问题中所说的那样,诀窍是让你的基类继承单一行为。例如:

public class Base Item : Monobehavior 
{
   public string ItemName;
   public int Price;
   public virtual void PickUp(){//pickup logic}
   //Additional functions. Update etc. Make them virtual.
}

这个类设置了一个项目应该做什么。然后在派生类中,您可以更改和扩展此行为。

public class Coin : BaseItem
{
    //properties set in the inspector
    public override void PickUp(){//override pickup logic}
}

在过去的一年里,我经常使用这种设计模式,目前正在零售产品中使用它。我会说去吧!Unity 似乎更喜欢组件而不是继承,但您可以轻松地将它们相互结合使用。

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一个未来和单声道之间的区别

在抽象类中创建方法而不是在扩展它的类中覆盖它们是一个好习惯吗?

使用move-constructor时将自己重置为nullptr是一个好习惯吗?

传递Ninject内核是一个好习惯吗?

Spring在方法上的@Profile是一个好习惯吗

每层集成测试是一个好习惯吗?

使用`import __main__`是一个好习惯吗?

链接libstdc ++ static是一个好习惯吗?

这是一个好习惯吗?“ / * /某物/ * /某物// * /”

缓存Fragment是一个好习惯吗?

经常使用$ scope。$ apply()是一个好习惯吗?

拥有大量 childEventListeners 是一个好习惯吗?

使用别名是一个好习惯吗?

在vuejs中使用CDN是一个好习惯吗?

命名空间作业是一个好习惯吗?

卸载依赖项。这是一个好习惯吗?

'+ ((visible && "is-active") || "")' 是一个好习惯吗?

在微服务和客户端库项目之间共享模型是一个好习惯吗?

扩展NSError是一个好习惯

在Repository类中观察Forever是一个好习惯吗?db + network页面列表

使用类属性实现类似单例的类是一个好习惯吗?

如何创建一个可以根据给定参数加减数字的函数?这是一个好习惯吗?

为创建和更新的日期列设置默认值是一个好习惯吗?

为主键手动创建索引是一个好习惯吗?

在子类SKSpriteNode中创建SKSpriteNode是一个好习惯吗?

在 Sequelize 操作之后关闭我的连接是一个好习惯吗?

根植我所有的服务是一个好习惯吗?

编写Scala代码时,省略点和括号是一个好习惯吗?

使用Storyboard和Spritekit在IOS中制作游戏是一个好习惯吗?