Итак, я связал CombatController
с объектом с именем "godObject".В методе Start()
я вызываю функции init()
для других классов.Я сделал это, чтобы контролировать порядок инициализации объектов, поскольку, например, контроллер персонажа полагается на инициализацию контроллера сетки.
Быстрая диаграмма:
-------------------- calls
| CombatController | ----------> CameraController.init();
-------------------- |
| ---> GridController.init();
|
| ---> CharacterController.init();
Итак,теперь у меня небольшая проблема.У меня есть несколько свойств, которые мне нужны в каждом контроллере.На данный момент я все привязал к самому боевому контроллеру.Это означает, что в каждом контроллере мне нужно получить экземпляр CombatController через GameObject.Find("godObject).GetComponent<CombatController>()
.Если честно, я не думаю, что это хороший дизайн.
Моя идея теперь состояла в том, чтобы создать BaseCombatController
, который расширяет MonoBehavior
, и затем все другие классы, такие как GridController
, CharacterController
и т. Д., Расширяют BaseCombatController
.Это может выглядеть так:
public class BaseCombatController : MonoBehaviour
{
public GameObject activePlayer;
public void setActivePlayer(GameObject player) {
this.activePlayer = player;
}
... more stuff to come ...
}
Таким образом, я могу получить доступ к activePlayer
везде без необходимости создавать новый экземпляр CombatController
.Однако, я не уверен, что у этого нет возможных побочных эффектов.
Итак, много текста для простого вопроса, это безопасно сделать?