Skip to content

Commit b1029c1

Browse files
committed
Rework
1 parent be0fb1a commit b1029c1

File tree

3 files changed

+89
-8
lines changed

3 files changed

+89
-8
lines changed

Storage.cs

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
1+
using System.Linq;
12
using UnityEngine;
23

3-
public static class Storage
4+
namespace ToolBox.Loader
45
{
5-
private static ScriptableObject[] _assets = Resources.LoadAll<ScriptableObject>("");
6-
7-
public static T Get<T>() where T : ScriptableObject
6+
public static class Storage
87
{
9-
for (int i = 0; i < _assets.Length; i++)
10-
if (_assets[i] is T asset)
11-
return asset;
8+
private static ILoadable[] _assets = null;
9+
10+
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
11+
private static void Setup()
12+
{
13+
#if UNITY_EDITOR
14+
var assets = Resources.FindObjectsOfTypeAll<ScriptableObject>();
15+
#else
16+
var assets = Resources.LoadAll<ScriptableObject>("");
17+
#endif
18+
_assets = assets
19+
.Where(x => x is ILoadable)
20+
.Cast<ILoadable>()
21+
.ToArray();
22+
23+
Debug.LogError($"Assets count: {_assets.Length}");
24+
}
1225

13-
return null;
26+
public static T Get<T>() where T : ILoadable
27+
{
28+
for (int i = 0; i < _assets.Length; i++)
29+
if (_assets[i] is T asset)
30+
return asset;
31+
32+
return default;
33+
}
1434
}
35+
36+
public interface ILoadable { }
1537
}

StorageBuildProcessor.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#if UNITY_EDITOR
2+
using System.Linq;
3+
using UnityEditor;
4+
using UnityEditor.Build;
5+
using UnityEditor.Build.Reporting;
6+
using UnityEngine;
7+
8+
namespace ToolBox.Loader
9+
{
10+
public class StorageBuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport
11+
{
12+
public int callbackOrder => 0;
13+
14+
public void OnPostprocessBuild(BuildReport report)
15+
{
16+
var loadables = Resources.FindObjectsOfTypeAll<ScriptableObject>()
17+
.Where(x => x is ILoadable
18+
&& AssetDatabase.GetAssetPath(x).Contains("Resources"));
19+
20+
foreach (var loadable in loadables)
21+
Object.DestroyImmediate(loadable, true);
22+
23+
AssetDatabase.SaveAssets();
24+
AssetDatabase.Refresh();
25+
}
26+
27+
public void OnPreprocessBuild(BuildReport report)
28+
{
29+
if (!AssetDatabase.IsValidFolder("Assets/Resources"))
30+
AssetDatabase.CreateFolder("Assets", "Resources");
31+
32+
var loadables = Resources.FindObjectsOfTypeAll<ScriptableObject>().Where(x => x is ILoadable);
33+
Debug.Log(loadables.Count());
34+
35+
foreach (var loadable in loadables)
36+
{
37+
var copy = Object.Instantiate(loadable);
38+
var path = $"Assets/Resources/{loadable.name}.asset";
39+
40+
AssetDatabase.CreateAsset(copy, path);
41+
}
42+
43+
AssetDatabase.SaveAssets();
44+
AssetDatabase.Refresh();
45+
}
46+
}
47+
}
48+
#endif

StorageBuildProcessor.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)