具有动态参数的 Unity Event 不再显示在 Unity 检查器中



我遇到了几天以前不存在的问题: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

最新更新