从本文开始,作者将会对SDK的unity代码进行讲解,让开发者对SDK在Unity中的使用有更加深入的了解,需要读者具有初步Unity开发基础,并且对VR有一定初步的了解。
前文也提到,SDK的Unity版本中最核心的脚本为SvrManager,本文就从SvrManager开始,从具体的代码入手,讲解SDK的使用及架构。
SvrManager是一个单例类,所谓的单例类就是指程序运行过程中只存在类的一个实例,开发者可以通过SvrManager.Instance获取实例,调用SvrManager中的公有类型的属性或者方法。具体实现脚本如下:
public static SvrManager Instance
{
get
{
if (instance == null) instance = FindObjectOfType<SvrManager>();
if (instance == null) Debug.LogError("SvrManager object component not found");
return instance;
}
}
private static SvrManager instance;
SvrManager中定义了sdk运行过程中表示状态的事件枚举类型,包括sdk Server的开启中、开启以及停止状态,Controller的连接中、连接以及断开状态,vrMode开始状态以及sensor错误类型等。其中解释下Svr Controller是指设备通过蓝牙连接Ximmerse手柄。具体的枚举类型代码如下:
public enum svrEventType
{
kEventNone = 0,
kEventSdkServiceStarting = 1,
kEventSdkServiceStarted = 2,
kEventSdkServiceStopped = 3,
kEventControllerConnecting = 4,
kEventControllerConnected = 5,
kEventControllerDisconnected = 6,
kEventThermal = 7,
kEventVrModeStarted = 8,
kEventSensorError
};
这些枚举类型在sdk中的作用是用来判断sdk的状态并处理相应的逻辑。