老师你好,自定义一个类,这个类继承Image,在这类里定义的private私有字段想要显示在Inspector面板里,所以给这个private字段添加[SerializeField]特性,但是不能显示出这个私有字段,我在网上搜这个问题没有搜到,所以想问一下老师这个问题的原因以及如何解决?
同学你好
[SerializeField]
特性可以使一个私有字段被序列化,但是不能保证在Inspector面板中显示出来。
要在Inspector面板中显示出私有字段,可以添加一个public属性来访问这个私有字段,并且在这个属性上添加[SerializeField]
特性。例如:
using UnityEngine;
public class MyImage : UnityEngine.UI.Image
{
[SerializeField]
private string myPrivateField;
public string MyPublicProperty
{
get { return myPrivateField; }
set { myPrivateField = value; }
}
}
在上面的代码中,我们新添加了一个名为MyPublicProperty
的公有属性,它访问了私有字段myPrivateField
并且添加了[SerializeField]
特性。这样,在Inspector面板中将会显示MyPublicProperty
属性,我们可以通过它来设置myPrivateField
的值。