private static void IncludeAssetsInBuild() { BuildProcessing.ProcessScene(GameInitializer.SCENE_NAME, true, (Scene scene) => { GameInitializer gameInitializer = GameObject.FindObjectOfType <GameInitializer>(); Type[] types = BuildProcessing.GetAllTypesWithAttributeType(typeof(IncludeInStartUpAttribute), false); for (int i = 0; i < types.Length; i++) { string[] assetsToInclude = AssetDatabase.FindAssets("t:" + types[i].Name); for (int ii = 0; ii < assetsToInclude.Length; ii++) { string assetPath = AssetDatabase.GUIDToAssetPath(assetsToInclude[ii]); UnityEngine.Object asset = AssetDatabase.LoadAssetAtPath(assetPath, types[i]); gameInitializer.AddAsset(asset); if (EditorUtility.DisplayCancelableProgressBar("Adding Assets", "Processing " + types[i].Name + "s: \"" + assetsToInclude + "\"", ((float)i / types.Length) + ((float)ii / assetsToInclude.Length) / types.Length)) { Debug.LogWarning("Adding Assets To Build canceled by user."); break; } } } }); }
public static void GrabAllAssets() { if (Application.isPlaying) { System.Type type = typeof(IncludeInStartUpAttribute); List <System.Type> types = new List <System.Type>(); types.AddRange(Assembly.GetAssembly(typeof(GameInitializer)).GetTypes() .Where(m => m.GetCustomAttributes(type, false).Length > 0)); for (int i = 0; i < types.Count; i++) { assets().AddRange(AssetDatabase.FindAssets("t:" + types[i].Name).Select(x => AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(x), types[i])).Where(x => x != null && !GameInitializer.assets().Contains(x)).ToArray()); } } }