123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- using System.Collections.Generic;
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- namespace VEngine.Editor.Builds
- {
- public enum ScriptPlayMode
- {
- Simulation,
- Preload,
- Incremental
- }
- [CreateAssetMenu(menuName = "Versions/Settings", fileName = "Settings", order = 0)]
- public sealed class Settings : ScriptableObject
- {
- public List<string> excludeFiles =
- new List<string>
- {
- ".spriteatlas",
- ".giparams",
- "LightingData.asset"
- };
- public bool offlineMode;
- public ScriptPlayMode scriptPlayMode = ScriptPlayMode.Simulation;
- public static string PlatformBuildPath
- {
- get
- {
- var dir = Utility.buildPath + $"/{GetPlatformName()}";
- if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
- return dir;
- }
- }
- public static string UnityBuildPath
- {
- get
- {
- var dir = Utility.BuildlesUnityFolder + $"/{GetPlatformName()}";
- if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
- return dir;
- }
- }
- public static string BuildPlayerDataPath =>
- string.Format("{0}/{1}", Application.streamingAssetsPath, Utility.buildPath);
- public static PlayerSettings GetPlayerSettings()
- {
- return LoadAsset<PlayerSettings>("Assets/Resources/PlayerSettings.asset");
- }
- public static Settings GetDefaultSettings()
- {
- var guilds = AssetDatabase.FindAssets("t:Settings");
- foreach (var guild in guilds)
- {
- var assetPath = AssetDatabase.GUIDToAssetPath(guild);
- if (string.IsNullOrEmpty(assetPath)) continue;
- var settings = LoadAsset<Settings>(assetPath);
- if (settings == null) continue;
- return settings;
- }
- return LoadAsset<Settings>("Assets/Settings.asset");
- }
- public static Manifest GetManifest()
- {
- var manifest = CreateInstance<Manifest>();
- manifest.name = nameof(Manifest);
- var path = GetBuildPath(manifest.name);
- if (!File.Exists(path)) return manifest;
- manifest.Load(path);
- return manifest;
- }
- public static List<ManifestBundle> GetBundlesInBuild(bool includeManifest)
- {
- var bundles = new List<ManifestBundle>();
- var manifest = GetManifest();
- bundles.AddRange(manifest.bundles);
- if (includeManifest)
- {
- var manifestName = $"{manifest.name}";
- var manifestVersionName = Manifest.GetVersionFile(manifestName);
- bundles.Add(new ManifestBundle
- {
- name = manifestVersionName,
- nameWithAppendHash = manifestVersionName
- });
- bundles.Add(new ManifestBundle
- {
- name = manifestName,
- nameWithAppendHash = manifestName
- });
- }
- return bundles;
- }
- public static string GetBuildPath(string file)
- {
- return $"{PlatformBuildPath}/{file}";
- }
- public static string GetPlatformName()
- {
- switch (EditorUserBuildSettings.activeBuildTarget)
- {
- case BuildTarget.Android:
- return "Android";
- case BuildTarget.StandaloneOSX:
- return "OSX";
- case BuildTarget.StandaloneWindows:
- case BuildTarget.StandaloneWindows64:
- return "Windows";
- case BuildTarget.iOS:
- return "iOS";
- case BuildTarget.WebGL:
- return "WebGL";
- default:
- return Utility.unsupportedPlatform;
- }
- }
- public static void PingWithSelected(Object target)
- {
- Selection.activeObject = target;
- EditorGUIUtility.PingObject(target);
- }
- public static T LoadAsset<T>(string path) where T : ScriptableObject
- {
- var asset = AssetDatabase.LoadAssetAtPath<T>(path);
- if (asset != null) return asset;
- var dir = Path.GetDirectoryName(path);
- if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) Directory.CreateDirectory(dir);
- asset = CreateInstance<T>();
- AssetDatabase.CreateAsset(asset, path);
- return asset;
- }
- public static void SaveAsset(Object asset)
- {
- EditorUtility.SetDirty(asset);
- AssetDatabase.SaveAssets();
- AssetDatabase.Refresh();
- }
- public static IEnumerable<string> GetDependencies(string path)
- {
- var set = new HashSet<string>(AssetDatabase.GetDependencies(path, true));
- set.Remove(path);
- return set;
- }
- }
- }
|