0
私は、カスタマイズされたイベントが呼び出されたときにstring
パラメータを返すことができるように、Unityの引数のないイベントクラスをオーバーライドしました。このパラメータは、単に押されたキーのコードです。パラメータ付きのカスタマイズされたUnityイベント
しかし、返されたキーコードの文字列キャストを含めると、キーコードが現在のコンテキストに存在しないというエラーメッセージが表示されます。
なぜ認識されないのか、私のイベントで文字列の値を返せない理由が混乱しています。誰かが私が間違ってやっていることを理解するのを助けてくれますか、ここでどのように目標を達成できるのでしょうか?下記の最初のスニペットで
、"My event arg"
は私が...
(String)kCode
または
kCode.ToString
、認識されない
kCode
自身でそれを置き換えるとき、私のイベントで返され、コンソールに出力、もちろんです
public class EventScript : MonoBehaviour
{
[Serializable]
public class RadioEvent : UnityEvent<string> { }
public RadioEvent OnRadioClicked = new RadioEvent();
void Update()
{
if (Input.anyKeyDown)
{
foreach(KeyCode kCode in Enum.GetValues(typeof(KeyCode)))
{
if (Input.GetKeyDown(kCode))
Debug.Log("KeyCode = " + kCode);
}
OnRadioClicked.Invoke("My event arg");
}
}
}
public class RadioManager : MonoBehaviour
{
private EventScript _eventScript;
void Awake()
{
_eventScript = GetComponentInChildren<EventScript>();
}
void Start()
{
_eventScript.OnRadioClicked.AddListener(MyEventHandler);
}
void OnDestroy()
{
_eventScript.OnRadioClicked.RemoveListener(MyEventHandler);
}
void MyEventHandler(string name)
{
Debug.Log("My event handled with " + name);
}
}
ご協力ありがとうございました。 – Joshua