如何在统一编辑器中显示以下 KeyValuePair(以便它是可编辑的)
How to show the following KeyValuePair in the unity editor(so that it is editable)
简而言之:我有一个 KeyValuePair,我想在 Inspector 中显示并使其可编辑。
我有以下实现 class 我的自定义键值对。
using UnityEngine;
namespace Unit.Properties
{
public class ClassificationPropertySuperClass : MonoBehaviour, IClassificationUnitProperty
{
[SerializeField]
KeyValuePair<UnitClassifications, float> value;
public KeyValuePair<UnitClassifications, float> GetComponentValue()
{
return value;
}
public void SetComponentValue(KeyValuePair<UnitClassifications, float> value)
{
this.value = value;
}
}
}
仅供参考,这是我制作的自定义 KeyValuePair class
[System.Serializable]
public class KeyValuePair<TKey, TValue>
{
public KeyValuePair()
{
}
public KeyValuePair(TKey key, TValue value)
{
Key = key;
Value = value;
}
public TKey Key { get; set; }
public TValue Value { get; set; }
}
现在问题的核心是我无法在检查器中编辑这些值。对于设计师来说,这是绝对必须的。我很想创建一个编辑器脚本来添加这个功能,但是当涉及到这些功能时我有点迷路了。有人愿意帮助我吗?
仅供参考,这是它们现在在检查器中的显示方式
非常感谢任何帮助!
Inspector 默认不能 display/edit 属性。
而不是
public TKey Key { set; get;}
public TValue Value { set; get}
使用
public TKey Key;
public TValue Value;
它应该可以在检查器中编辑。
在较新的版本中你也可以这样做
[field: SerializeField] public TKey Key { set; get;}
[field: SerializeField] public TValue Value { set; get}
简而言之:我有一个 KeyValuePair,我想在 Inspector 中显示并使其可编辑。
我有以下实现 class 我的自定义键值对。
using UnityEngine;
namespace Unit.Properties
{
public class ClassificationPropertySuperClass : MonoBehaviour, IClassificationUnitProperty
{
[SerializeField]
KeyValuePair<UnitClassifications, float> value;
public KeyValuePair<UnitClassifications, float> GetComponentValue()
{
return value;
}
public void SetComponentValue(KeyValuePair<UnitClassifications, float> value)
{
this.value = value;
}
}
}
仅供参考,这是我制作的自定义 KeyValuePair class
[System.Serializable]
public class KeyValuePair<TKey, TValue>
{
public KeyValuePair()
{
}
public KeyValuePair(TKey key, TValue value)
{
Key = key;
Value = value;
}
public TKey Key { get; set; }
public TValue Value { get; set; }
}
现在问题的核心是我无法在检查器中编辑这些值。对于设计师来说,这是绝对必须的。我很想创建一个编辑器脚本来添加这个功能,但是当涉及到这些功能时我有点迷路了。有人愿意帮助我吗?
仅供参考,这是它们现在在检查器中的显示方式
非常感谢任何帮助!
Inspector 默认不能 display/edit 属性。
而不是
public TKey Key { set; get;}
public TValue Value { set; get}
使用
public TKey Key;
public TValue Value;
它应该可以在检查器中编辑。
在较新的版本中你也可以这样做
[field: SerializeField] public TKey Key { set; get;}
[field: SerializeField] public TValue Value { set; get}