Unityにて別クラスのインスタンスを取らずに、そのクラスのとある関数が呼ばれた際に自クラスのとある関数を実行したい。
入力状況により、ゲーム上の様々なオブジェクトのアニメーションを管理するクラスを制作していますが
どれも面倒な方法になってしまいもう少しいい方法は無いのか悩んでおります。
何か良い方法など無いでしょうか?
例) アニメーション管理クラスがアニメーション操作するオブジェクトの参照を全て取っておく
操作するオブジェクトが増えると凄い大変です。
class AnimationManager : Monobehaviour { public Animator humanAnim; public Animator carAnim; public Animator enemyAnim; public void AnimationPlay(string animName) { humanAnim.Play(animName); carAnim.Play(animName); enemyAnim.Play(animName); } } class InputManager : Monobehaviour { public AnimationManager animManager; private void Update() { if (Input.GetKey(KeyCode.W)) animManager.AnimationPlay("front"); if (Input.GetKey(KeyCode.A)) animManager.AnimationPlay("left"); if (Input.GetKey(KeyCode.S)) animManager.AnimationPlay("back"); if (Input.GetKey(KeyCode.D)) animManager.AnimationPlay("right"); } }
> Unityにて別クラスのインスタンスを取らずに、そのクラスのとある関数が呼ばれた際に自クラスのとある関数を実行したい。
こんな場合はデリゲート(delegate)ではないかと思うのですが、
[デリゲート (C# プログラミング ガイド)] https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/delegates/
今の今まで何も回答、コメントが無いことを思うと、Unity特有の何かがあったり、私が質問(要望)を読み誤っているのかもしれません。