Unity 小科普
老規矩,先介紹一下 Unity 的科普小知識:
- Unity是 實時3D互動內容創作和運營平臺 ,
- 包括游戲開發、美術、建筑、汽車設計、影視在內的所有創作者,借助 Unity 將創意變成現實,
- Unity 平臺提供一整套完善的軟體解決方案,可用于創作、運營和變現任何實時互動的2D和3D內容,支持平臺包括手機、平板電腦、PC、游戲主機、增強現實和虛擬現實設備,
- 也可以簡單把 Unity 理解為一個游戲引擎,可以用來專業制作游戲!
Unity 小知識點學習
C# 中通過數字int值獲取列舉Enum的方法
列舉 是 值型別 ,資料直接存盤在堆疊中,而不是使用參考和真實資料的隔離方式來存盤,
- 默認情況下,列舉中的第一個變數被賦值為0,其他的變數的值按定義的順序來遞增(0,1,2,3…)
- enum列舉型別的變數的名字不能相同,但是值可以相同
- 如果enum中的部分成員顯式定義了值,而部分沒有;那么沒有定義值的成員還是會按照上一個成員的值來遞增賦值
例如以下列舉:
public enum SlamStateChange
{
NotInitialized,//默認值int值為0
Initializing,//默認值int值為1
Lost,//默認值int值為2
Tracking//默認值int值為3
}
我們可以直接通過 列舉. 的方式來獲取列舉中的值:
Debug.Log("state:" + SlamStateChange.NotInitialized);//state:NotInitialized
Debug.Log("state:" + SlamStateChange.Initializing);//state:Initializing
Debug.Log("state:" + SlamStateChange.Lost);//state:Lost
Debug.Log("state:" + SlamStateChange.Tracking);//state:Tracking
也可以使用int值的方法來獲取列舉中的值:
Debug.Log("state:" + (SlamStateChange)int.Parse("0"));//state:NotInitialized
Debug.Log("state:" + (SlamStateChange)int.Parse("1"));//state:Initializing
Debug.Log("state:" + (SlamStateChange)int.Parse("2"));//state:Lost
Debug.Log("state:" + (SlamStateChange)int.Parse("3"));//state:Tracking
我這里正好有一個需求:
- Unity端從so中通過回呼回傳一個
int型別的State狀態值, - Unity端拿到這個值之后,通過判斷這個
int型別的數值來判斷當前應用程式的狀態,, - 所以這里就可以使用int值的方法來獲取列舉中的值來完成狀態的更新,
即可以將int值列印出來,也可以將對應的狀態展示,示例如下:
public enum StateChange
{
NotInitialized,
Initializing,
Lost,
Tracking
}
private void Update ()
{
//將int值 和 對應的狀態展示
_State.text = string.Format("SlamStateChange:{0}/{1}", state, (StateChange)int.Parse(state.ToString()));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/392267.html
標籤:其他
