Example #1
0
        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));
        }
Example #2
0
        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;
        }