Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        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);
            }
        }