public static List <TileObject> CreateTileObjectsAt(string folderPath, params GameObject[] selectedObjects) { var list = new List <TileObject>(); foreach (var prefab in selectedObjects) { string path = folderPath + "/" + prefab.name;//UnityEditor.AssetDatabase.GetAssetPath(prefab); TileObject tile = CreateInstance <TileObject>(); tile.prefabs = new GameObject[] { prefab }; var behaviour = Resources.Load <TileBehaviour>("TileBehaviours/DefaultTileBehaviour"); tile.behaviours = new List <TileBehaviourBase>() { behaviour }; tile.CalcBounds(); if (path.Contains(".prefab")) { path = path.Replace(".prefab", ""); } path = path.Insert(path.LastIndexOf("/") + 1, "tile_"); UnityEditor.AssetDatabase.CreateAsset(tile, path + ".asset"); list.Add(UnityEditor.AssetDatabase.LoadAssetAtPath <TileObject>(path + ".asset")); } return(list); //return UnityEditor.AssetDatabase.LoadAssetAtPath<TileObject>(path + ".asset"); }
public static TileObject CreateNewTileFileFromPrefabs(bool createAsset, params GameObject[] selectedObjects) { if (selectedObjects.Length == 0) { Debug.LogWarning("[TileObject] cannot create TileObject without gameObject or path"); return(null); } GameObject prefab = selectedObjects[0]; // as GameObject; string path = UnityEditor.AssetDatabase.GetAssetPath(prefab); TileObject tile = CreateInstance <TileObject>(); tile.prefabs = selectedObjects; var behaviour = Resources.Load <TileBehaviour>("TileBehaviours/DefaultTileBehaviour"); tile.behaviours = new List <TileBehaviourBase>() { behaviour }; tile.CalcBounds(); if (path.Contains(".prefab")) { path = path.Replace(".prefab", ""); } path = path.Insert(path.LastIndexOf("/") + 1, "tile_"); if (createAsset) { UnityEditor.AssetDatabase.CreateAsset(tile, path + ".asset"); return(UnityEditor.AssetDatabase.LoadAssetAtPath <TileObject>(path + ".asset")); } else { tile.name = prefab.name; return(tile); } }