此功能是因為我們代碼使用的是dll,添加到Script Execution Order的代碼為dll代碼,設置后svn提交Player Settings文件夾下的文件进肯。結果更新后沒有這些更新到設置边败。后面查看了dll的meta文件兽间。發(fā)現(xiàn)meta文件里有相關的設置艇挨。如下圖:
dll的meta內容
猜測可能需要編輯dll酬屉,加入一些標識,所以就只能用工具手動加入這些類屋休,調整調用順序坞古。
工具代碼如下:
[ExecuteInEditMode]
[MenuItem("UnityTools/Script Execution Order")]
private static void SetScriptOrder()
{
Assembly asm = Assembly.Load(@"UnityEditor");
Type type = asm.GetType("UnityEditor.ScriptExecutionOrderInspector");
object obj = asm.CreateInstance("UnityEditor.ScriptExecutionOrderInspector");
MethodInfo oMethod = type.GetMethod("SetExecutionOrder", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);
GameObject go = new GameObject();
SunFlareSystem.FlareSystem fs = go.AddComponent<SunFlareSystem.FlareSystem>();
MonoScript ms = MonoScript.FromMonoBehaviour(fs);
oMethod.Invoke(obj, new object[] { ms, 1200 });
GameObject.DestroyImmediate(go);
MethodInfo apply = type.GetMethod("Apply", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);
apply.Invoke(obj, null);
EditorUtility.DisplayDialog("Script Execution Order", "添加成功", "確定");
}