我遇到了几天以前不存在的问题:UnityEvent 不再管理参数。
起初我认为它与 Unity 版本有关,因为我更新到 2019.3b,即使在 2019.2.5f1 中返回也存在问题。
统一检查器
如图所示,"动态"元素不再显示,事件名称旁边也不显示类型。
代码非常简单:
using System;
using UnityEngine;
using UnityEngine.Events;
[Serializable] public class VoidEvent : UnityEvent { }
[Serializable] public class BoolEvent : UnityEvent<bool> { }
[Serializable] public class IntEvent : UnityEvent<int> { }
[Serializable] public class StringEvent : UnityEvent<string> { }
public class Cube : MonoBehaviour
{
[SerializeField] VoidEvent voidEvent = null;
[SerializeField] BoolEvent boolEvent = null;
[SerializeField] IntEvent intEvent = null;
[SerializeField] StringEvent stringEvent = null;
public void OnVoidEvent()
{
Debug.Log("OnVoidEvent");
}
public void OnBoolEvent(bool value)
{
Debug.Log($"OnBoolEvent {value}");
}
public void OnIntEvent(int value)
{
Debug.Log($"OnIntEvent {value}");
}
public void OnStringEvent(string value)
{
Debug.Log($"OnStringEvent {value}");
}
}
我在另一台计算机上尝试了相同的代码,存在相同的问题。我在OSX上使用Visual studio代码和Unity 2019.3b和2019.2.5f1。
刚刚在 Unity 问题跟踪器中找到了您的问题。这是一个已知问题,已在版本 2019.3 中解决。
您可以在此处看到问题:
- 不能再使用具有参数的 UNITY 事件
这是以下项的副本:
- UNITYEVENT 抽屉不再正确处理非公共字段中的事件
编辑:此错误在以下版本中发现:2019.2.1f1,2019.3.0a12,2019.3.0b1,2020.1.0a2