是否可以在 Unity 编辑器中显示静态字段?

Pat*_*icz 5 c# unity-game-engine

我昨天写了一个小脚本,但它不起作用。(序列化字段未统一显示且很少有错误,例如我无法使用对非静态成员(序列化字段)的引用)。你能帮我吗。

例如。

using UnityEngine;
public class sExample : MonoBehaviour
{
  [SerializeField] public static GameObject gameObj;
  public void serializeUse()
  {
    //Do something with gameObj
  }
}
public class serializeEx : NetworkBehaviour
{
  public void Update()
  {
    If (!isLocalPlayer)
    {
      sExample.serializeUse()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

多谢

Tob*_*eel 4

那应该有效。我认为当您想向编辑器公开某些内容时,不能使用静态。

using UnityEngine;
[Serializable]
public class sExample : MonoBehaviour
{
  [SerializeField] public GameObject gameObj;
  public void serializeUse()
  {
    //Do something with gameObj
  }
}

public class serializeEx : NetworkBehaviour
{
  public void Update()
  {
    If (!isLocalPlayer)
    {
      sExample.serializeUse()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

编辑:

正如这篇文章中提到的,静态似乎适用于 JavaScript 。要完成这项工作,您必须切换到检查器中的调试视图。就像下图所示:

显示调试视图的图像

编辑2:

Serializeable 的作用的解释取自 Unity文档

Serialized 属性允许您在检查器中嵌入具有子属性的类。

您可以使用它在检查器中显示变量,类似于 Vector3 在检查器中的显示方式。名称和一个三角形来扩展其属性。为此,您需要创建一个从 System.Object 派生的类,并为其赋予 Serializable 属性。在 JavaScript 中,可序列化属性是隐式的且不是必需的。

using UnityEngine;

[System.Serializable]
class Test : System.Object
{
    public int p = 5;
    public Color c = Color.white;
}
Run Code Online (Sandbox Code Playgroud)