// PUBLIC METHODS: ------------------------------------------------------------------------ public static string RandomHash(int count) { string hash = ""; for (int i = 0; i < count; ++i) { int charPosition = GameCreatorUtilities.RandomValue(0, CHARACTERS.Length); hash += CHARACTERS[charPosition]; } return(hash); }
private void LoadDatabases() { List <IDatabase> databases = GameCreatorUtilities.FindAssetsByType <IDatabase>(); int databasesCount = databases.Count; DATABASES = new List <DatabaseInfo>(); for (int i = 0; i < databasesCount; ++i) { DATABASES.Add(new DatabaseInfo(databases[i])); } DATABASES.Sort(); }
private void LoadDatabases() { List <IDatabase> databases = GameCreatorUtilities.FindAssetsByType <IDatabase>(); int databasesCount = databases.Count; DATABASES = new List <DatabaseInfo>(); for (int i = 0; i < databasesCount; ++i) { DATABASES.Add(new DatabaseInfo(databases[i])); } DATABASES.Sort((DatabaseInfo x, DatabaseInfo y) => { int valueX = x.data.GetSidebarPriority(); int valueY = y.data.GetSidebarPriority(); return(valueX.CompareTo(valueY)); }); }
private static void SetupDeferred <T>() where T : IDatabase { EditorApplication.update -= SetupDeferred <T>; T database = ScriptableObject.CreateInstance <T>(); string assetPath = database.GetAssetPath(); IDatabase asset = AssetDatabase.LoadAssetAtPath <IDatabase>(assetPath); if (asset == null) { GameCreatorUtilities.CreateFolderStructure(assetPath); AssetDatabase.Refresh(); asset = ScriptableObject.CreateInstance <T>(); AssetDatabase.CreateAsset(asset, assetPath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } }
public static T AddGameObjectToPrefab <T>(GameObject prefabRoot, string name) where T : MonoBehaviour { GameObject instancePrefab = (GameObject)PrefabUtility.InstantiatePrefab(prefabRoot); string instanceChildName = string.Format("{0}-{1}", name, GameCreatorUtilities.RandomHash(8)); GameObject instanceChild = new GameObject(instanceChildName); instanceChild.AddComponent <T>(); instanceChild.transform.SetParent(instancePrefab.transform); PrefabUtility.ReplacePrefab(instancePrefab, prefabRoot, ReplacePrefabOptions.Default); UnityEngine.Object.DestroyImmediate(instancePrefab); GameObject prefabChild = prefabRoot.transform.Find(instanceChildName).gameObject; prefabChild.name = name; AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(prefabRoot)); return(prefabChild.GetComponent <T>()); }
public static void RemoveGameObjectFromPrefab(GameObject prefabRoot, GameObject prefabChild) { string prefabChildName = string.Format("{0}-{1}", prefabChild.name, GameCreatorUtilities.RandomHash(8)); prefabChild.name = prefabChildName; GameObject instancePrefab = (GameObject)PrefabUtility.InstantiatePrefab(prefabRoot); foreach (Transform instanceChildEntry in instancePrefab.transform) { if (instanceChildEntry.gameObject.name == prefabChildName) { UnityEngine.Object.DestroyImmediate(instanceChildEntry.gameObject); break; } } PrefabUtility.ReplacePrefab(instancePrefab, prefabRoot, ReplacePrefabOptions.ConnectToPrefab); UnityEngine.Object.DestroyImmediate(instancePrefab); }