我希望實作一個帶有嵌套類的靜態類,可以在 Unity Inspector 中查看和修改。
關于如何實作這一目標的任何建議?
我已經嘗試成功使用嵌套的靜態類,但我無法將它們添加為組件以便在檢查器中查看。
關于如何實作這一目標的任何建議?
這是我的示例代碼。如果沒有 Monobehaviour,我無法將其作為組件添加到檢查器中。
using UnityEngine;
public static class Parameters
{
[System.Serializable]
public static class GroupA
{
public static float varA = 1f;
}
[System.Serializable]
public static class GroupB
{
public static float varB = 2f;
}
}
然后我可以呼叫它,例如
Parameters.GroupA.varA;
在此先感謝并為我的代碼發臭感到抱歉。
最好的,羅伯
uj5u.com熱心網友回復:
對于這種情況,我使用“Odin 檢查員”。
using UnityEngine;
using Sirenix.OdinInspector;
public static class Parameters
{
[System.Serializable]
public class GroupA
{
public float varA = 1f;
}
[System.Serializable]
public class GroupB
{
public float varB = 2f;
}
[ShowInInspector]
public static GroupA staticGroupA;
[ShowInInspector]
public static GroupB staticGroupB;
void Start()
{
GroupA = new GroupA();
GroupA.varA = 1f;
GroupB = new GroupB();
GroupB.varB = 2f;
}
我希望它有所幫助。最好的。
uj5u.com熱心網友回復:
我最終使用了一個第二輪作業的單身人士。為此,我在父類中添加了:
public static Parameters myInstance {get; private set;}
并且對于每個內部類
public GroupA groupA = new GroupA();
我洗掉了所有其他靜態參考。
uj5u.com熱心網友回復:
您的用例不需要第三方庫。
static
我根本不會使用它,而是使用ScriptableObject
.
這些是資產,因此任何東西都可以參考它們,它們可以存盤序列化值以及實作自己的邏輯。有關更多資訊,另請參閱使用 ScriptableObjects 構建游戲的三種方法
所以在你的情況下,例如
[CreateAssetMenu]
public class Parameters : ScriptableObject
{
[System.Serializable]
public class GroupAClass
{
public float varA = 1f;
}
[System.Serializable]
public class GroupBClass
{
public float varB = 2f;
}
public GroupAClass GroupA;
public GroupBClass GroupB;
}
Assets
然后通過→ right click→ Create→ 引數創建資產
在這里,您現在可以像往常一樣通過 Inspector 調整您的值。
最后,每當您需要訪問它們時,您都有一個欄位
public Parameters parameters;
拖入相應的資產并通過例如訪問值
parameters.GroupA.varA
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/519990.html
上一篇:通過腳本將相機深度紋理設定為無