CreateScreenDataObjects(string screenName) { // Progress bar EditorUtility.DisplayProgressBar( CONST_EditorProgressBarTitle, "Data Assets", 0.4f); string pathHeader = CONST_RootUIScreenPath + screenName + "/"; // Create view object data UIViewConfigData viewDataObj = ScriptableObject.CreateInstance <UIViewConfigData>(); AssetDatabase.CreateAsset( viewDataObj, pathHeader + "Views/UIView_" + screenName + "_Default_Data.asset"); // Create screen object data UIScreenConfigData screenDataObj = ScriptableObject.CreateInstance <UIScreenConfigData>(); // Assign view to screen screenDataObj.views = new[] { viewDataObj }; screenDataObj.triggerCode = screenName.ToLower(); AssetDatabase.CreateAsset( screenDataObj, pathHeader + "UIScreen_" + screenName + "_Data.asset"); // Save the assets return(new Tuple <UIScreenConfigData, UIViewConfigData>(screenDataObj, viewDataObj)); }
private static void CreateScreenPrefabs() { string _screenName = EditorPrefs.GetString(CONST_EditorPrefsScreenNameKey); // Create screen object prefab GameObject screenPrefabObj = new GameObject { name = "UIScreen_" + _screenName }; Type screenType = System.AppDomain.CurrentDomain.GetTypeByName( EditorPrefs.GetString(CONST_EditorPrefsScreenClassGenType)); screenPrefabObj.AddComponent(screenType); // Set data field UIScreenConfigData screenData = (UIScreenConfigData)AssetDatabase.LoadAssetAtPath( CONST_RootUIScreenPath + _screenName + "/UIScreen_" + _screenName + "_Data.asset", typeof(UIScreenConfigData)); ReflectionHelpers.SetTypeFieldValue( screenPrefabObj, screenType, CONST_ScreenPrefabDataTemplateFieldName, screenData); // Save prefab string path = CONST_RootUIScreenPath + _screenName + "/Prefabs/UIScreen_" + _screenName + ".prefab"; PrefabUtility.SaveAsPrefabAssetAndConnect( screenPrefabObj, path, InteractionMode.UserAction); // Create view object prefab GameObject viewPrefabObj = new GameObject { name = "UIView_" + _screenName + "_Default" }; Type viewType = System.AppDomain.CurrentDomain.GetTypeByName( EditorPrefs.GetString(CONST_EditorPrefsViewClassGenType)); Canvas c = viewPrefabObj.AddComponent <Canvas>(); c.renderMode = RenderMode.ScreenSpaceOverlay; CanvasScaler cs = viewPrefabObj.AddComponent <CanvasScaler>(); cs.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; viewPrefabObj.AddComponent <GraphicRaycaster>(); viewPrefabObj.AddComponent(viewType); string viewPath = CONST_RootUIScreenPath + _screenName + "/Prefabs/UIView_" + _screenName + "_Default.prefab"; GameObject viewPrefab = PrefabUtility.SaveAsPrefabAssetAndConnect( viewPrefabObj, viewPath, InteractionMode.UserAction); UnityEditor.Editor.DestroyImmediate(viewPrefabObj); // Assign view prefab to view data object UIViewConfigData viewData = (UIViewConfigData)AssetDatabase.LoadAssetAtPath( CONST_RootUIScreenPath + _screenName + "/Views/UIView_" + _screenName + "_Default_Data.asset", typeof(UIViewConfigData)); viewData.prefab = viewPrefab; }