/// <summary> /// Gets the resource folder. /// </summary> /// <param name="_folder">Folder.</param> private void GetResourceFolder(out GS.Resource.ResourceFolder _folder) { GS.Resource.ResourceFolder[] _folders = Resources.LoadAll <GS.Resource.ResourceFolder>(""); Debug.Log("Folder count: " + _folders.Length); if (_folders.Length.Equals(0)) { Debug.LogError("No TextFolder found!\nMake sure you have TextFolder under Assets/Resources/ directory.\nRecommended path '/Assets/Resources/~'.\n", this); _folder = null; return; } GS.Resource.ResourceFolder folder = null; for (int i = 0; i < _folders.Length; i++) { GS.Data.Settings.Instance.keyValues.TryGetKeyValue(keyValue, out string value); if (_folders[i].resource.Equals(value)) { folder = _folders[i]; Debug.Log("Found ResourceFolder using given KeyValue: " + keyValue); break; } } Debug.Log("Returning ResourceFolder"); _folder = folder; }
/// <summary> /// Gets the folder for Unity Editor. /// </summary> /// <param name="_folder">Folder.</param> public void GetFolderForEditor(out GS.Resource.ResourceFolder _folder) { // If player preferences has no key for language, set one. if (!GS.Data.Settings.Instance.keyValues.HasKey(keyValue)) { GS.Data.Settings.Instance.keyValues.SetKey(keyValue, "Default"); } GetResourceFolder(out GS.Resource.ResourceFolder folder); _folder = folder; }
private void CopyAssets() { // TODO ResourceFolderEditor Copy assets! var _class = target as GS.Resource.ResourceFolder; // Create new resource type using same ResourceFolder in same resource path. GS.Resource.ResourceFolder folder = (GS.Resource.ResourceFolder)ScriptableObject.CreateInstance(typeof(GS.Resource.ResourceFolder)); folder.path = _class.path; folder.resourceKey = _class.resourceKey; folder.resource = _resource; // Create possibly missing directory. CreateDirectory(_resource); List <GS.Resource.ResourceTable> _tables = new List <GS.Resource.ResourceTable>(); foreach (GS.Resource.ResourceTable _table in _class.tables) { // Create asset and set values GS.Resource.ResourceTable asset = (GS.Resource.ResourceTable)ScriptableObject.CreateInstance(_table.GetType()); asset.name = _table.name; asset.updateEvents = _table.updateEvents; _tables.Add(asset); // Create ResourceTable asset AssetDatabase.CreateAsset(asset, string.Format( "Assets/Resources/{0}/{1}/{2}.asset", folder.path, folder.resource, // Get old ResourceTable location, split path and cut extension off it. AssetDatabase.GetAssetPath(_table).Split('/').Last().Split('.')[0] )); } folder.tables = _tables.ToArray(); // Get old ResourceFolder location and cut extension from it. string folderLocation = AssetDatabase.GetAssetPath(_class).Split('.')[0]; int folderCount = AssetDatabase.FindAssets( string.Format("{0} t:GS.Resource.ResourceFolder", folderLocation.Split('/').Last()), new[] { folderLocation.Remove(folderLocation.LastIndexOfAny("/".ToCharArray())) }).Length; // Create ResourceFolder asset AssetDatabase.CreateAsset(folder, string.Format( "{0}{1}.asset", folderLocation, folderCount - 1)); // Finalize all created assets AssetDatabase.SaveAssets(); _tables.Clear(); }