【发布时间】:2019-08-11 07:27:36
【问题描述】:
我目前正在使用 Unity3D 制作游戏,并且正在尝试将 SOLID 的单一职责原则实施到我的游戏中,因为我正在学习它。
我想知道是否有人可以解释一下 SRP 的良好实现是什么样的,因为我觉得我正在破坏它。
我已将我的课程分解为基础部分:
- PlayerInput.cs - 获取输入并将其存储到变量中(水平、垂直、人民币等)
- PlayerController.cs - 处理攻击和玩家状态(空闲、移动、攻击)ATM
- PlayerMovement.cs - 处理移动和旋转(查看鼠标)
- AnimationController.cs - 处理所有动画
当我开始时,我觉得我在关注 SRP,但现在游戏变得越来越复杂。上面列出的每个类都会引用其他类,这似乎是不必要的。我在每个类中使用了 5 个 GetComponents,这似乎是重复的,因为它们都在同一个对象上。换句话说,SRP 似乎需要做更多的工作,而且效率会降低。
例如,PlayerController 和 PlayerMovement 脚本都引用了 AnimationController,而 AnimationController 也引用了这两者。所有脚本都引用了 PlayerInput。 (请记住,为了简单起见,我省略了其他与玩家相关的脚本,例如制作和设备,但我的 Start 和 Awake 方法充满了一堆 GetComponent 调用)
谁能更好地向我解释 SRP,也许可以为我指明正确的方向,所以我不会在同一个 GameObject 上过多使用 GetComponent。
谢谢
【问题讨论】:
标签: c# unity3d solid-principles single-responsibility-principle