Skip to content

Commit 59d4c4a

Browse files
author
András Kurai
committed
generate load methods
1 parent 1516593 commit 59d4c4a

File tree

7 files changed

+60
-24
lines changed

7 files changed

+60
-24
lines changed

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator.Sample/ResourcePaths.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using UnityEngine;
2+
using UnityEngine.SceneManagement;
13
namespace AutSoft.UnityResourceGenerator.Sample
24
{
35
// ReSharper disable PartialTypeWithSinglePart
@@ -6,22 +8,33 @@ public static partial class ResourcePaths
68
public static partial class Scenes
79
{
810
public const string CreatePrefab = "AutSoft.UnityResourceGenerator.Sample/Scenes/CreatePrefab";
11+
public static void LoadCreatePrefab(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(CreatePrefab, mode);
12+
public static AsyncOperation LoadAsyncCreatePrefab(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(CreatePrefab, mode);
913
public const string LoadSceneInitial = "AutSoft.UnityResourceGenerator.Sample/Scenes/LoadSceneInitial";
14+
public static void LoadLoadSceneInitial(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(LoadSceneInitial, mode);
15+
public static AsyncOperation LoadAsyncLoadSceneInitial(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(LoadSceneInitial, mode);
1016
public const string LoadSceneNext = "AutSoft.UnityResourceGenerator.Sample/Scenes/LoadSceneNext";
17+
public static void LoadLoadSceneNext(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(LoadSceneNext, mode);
18+
public static AsyncOperation LoadAsyncLoadSceneNext(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(LoadSceneNext, mode);
1119
}
1220
public static partial class Prefabs
1321
{
1422
public const string Cube = "Cube";
23+
public static GameObject LoadCube() => Resources.Load<GameObject>(Cube);
1524
}
1625
public static partial class Materials
1726
{
1827
public const string Cube = "Cube";
28+
public static Material LoadCube() => Resources.Load<Material>(Cube);
1929
public const string CubeAlt = "CubeAlt";
30+
public static Material LoadCubeAlt() => Resources.Load<Material>(CubeAlt);
2031
}
2132
public static partial class AudioClips
2233
{
2334
public const string CoinSpin = "CoinSpin";
35+
public static AudioClip LoadCoinSpin() => Resources.Load<AudioClip>(CoinSpin);
2436
public const string Coin = "Coin";
37+
public static AudioClip LoadCoin() => Resources.Load<AudioClip>(Coin);
2538
}
2639
public static partial class Sprites
2740
{

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator.Tests/ResourcePathTests.cs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
using AutSoft.UnityResourceGenerator.Sample;
22
using NUnit.Framework;
3-
using UnityEngine;
4-
using UnityEngine.SceneManagement;
53

64
namespace AutSoft.UnityResourceGenerator.Tests
75
{
@@ -10,34 +8,34 @@ public class ResourcePathTests
108
[Test]
119
public void ScenesWork()
1210
{
13-
Assert.DoesNotThrow(() => SceneManager.LoadScene(ResourcePaths.Scenes.LoadSceneInitial));
14-
Assert.DoesNotThrow(() => SceneManager.LoadScene(ResourcePaths.Scenes.LoadSceneNext));
11+
Assert.DoesNotThrow(() => ResourcePaths.Scenes.LoadLoadSceneInitial());
12+
Assert.DoesNotThrow(() => ResourcePaths.Scenes.LoadLoadSceneNext());
1513
}
1614

1715
[Test]
1816
public void PrefabsWork()
1917
{
20-
var prefab = Resources.Load<GameObject>(ResourcePaths.Prefabs.Cube);
18+
var prefab = ResourcePaths.Prefabs.LoadCube();
2119
Assert.NotNull(prefab);
2220
}
2321

2422
[Test]
2523
public void MaterialsWork()
2624
{
27-
var cubeMaterial = Resources.Load<Material>(ResourcePaths.Materials.Cube);
25+
var cubeMaterial = ResourcePaths.Materials.LoadCube();
2826
Assert.NotNull(cubeMaterial);
2927

30-
var cubeAltMaterial = Resources.Load<Material>(ResourcePaths.Materials.CubeAlt);
28+
var cubeAltMaterial = ResourcePaths.Materials.LoadCubeAlt();
3129
Assert.NotNull(cubeAltMaterial);
3230
}
3331

3432
[Test]
3533
public void AudioClipsWork()
3634
{
37-
var coin = Resources.Load<AudioClip>(ResourcePaths.AudioClips.Coin);
35+
var coin = ResourcePaths.AudioClips.LoadCoin();
3836
Assert.NotNull(coin);
3937

40-
var coinSpin = Resources.Load<AudioClip>(ResourcePaths.AudioClips.CoinSpin);
38+
var coinSpin = ResourcePaths.AudioClips.LoadCoinSpin();
4139
Assert.NotNull(coinSpin);
4240
}
4341
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/IResourceData.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ public interface IResourceData
77
string ClassName { get; }
88
IReadOnlyList<string> FileExtensions { get; }
99
bool IsResource { get; }
10+
string DataType { get; }
1011
}
1112
}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/Modules/AllResources.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,22 @@ public static partial class {data.ClassName}
6666
var output = values
6767
.Aggregate(
6868
new StringBuilder().Append(classBegin),
69-
(sb, s) => sb
70-
.Append(" public const string ")
71-
.Append(s.name)
72-
.Append(" = \"")
73-
.Append(s.path)
74-
.AppendLine("\";"))
69+
(sb, s) =>
70+
{
71+
sb.Append(" public const string ").Append(s.name).Append(" = \"").Append(s.path).AppendLine("\";");
72+
73+
if (data.DataType == "Scene")
74+
{
75+
sb.Append(" public static ").Append("void").Append(" Load").Append(s.name).Append("(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadScene(").Append(s.name).AppendLine(", mode);");
76+
sb.Append(" public static ").Append("AsyncOperation").Append(" LoadAsync").Append(s.name).Append("(LoadSceneMode mode = LoadSceneMode.Single) => SceneManager.LoadSceneAsync(").Append(s.name).AppendLine(", mode);");
77+
}
78+
else
79+
{
80+
sb.Append(" public static ").Append(data.DataType).Append(" Load").Append(s.name).Append("() => Resources.Load<").Append(data.DataType).Append(">(").Append(s.name).AppendLine(");");
81+
}
82+
83+
return sb;
84+
})
7585
.AppendLine(classEnd)
7686
.ToString();
7787

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/Generation/ResourceFileGenerator.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ public static string CreateResourceFile(ResourceContext context)
1111
{
1212
// ReSharper disable once MissingIndent
1313
const string fileBegin =
14-
@"namespace {0}
14+
@"
15+
using UnityEngine;
16+
using UnityEngine.SceneManagement;
17+
18+
namespace {0}
1519
{
1620
// ReSharper disable PartialTypeWithSinglePart
1721
public static partial class {1}

UnityResourceGenerator/Assets/AutSoft.UnityResourceGenerator/Editor/ResourceGeneratorSettings.cs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,24 @@ public sealed class ResourceData : IResourceData
1515
[SerializeField] private string _className = default;
1616
[SerializeField] private string[] _fileExtensions = default;
1717
[SerializeField] private bool _isResource = default;
18+
[SerializeField] private string _dataType = default;
1819

1920
public ResourceData()
2021
{
2122
}
2223

23-
public ResourceData(string className, string[] fileExtensions, bool isResource)
24+
public ResourceData(string className, string[] fileExtensions, bool isResource, string dataType)
2425
{
2526
_className = className;
2627
_fileExtensions = fileExtensions;
2728
_isResource = isResource;
29+
_dataType = dataType;
2830
}
2931

3032
public string ClassName => _className;
3133
public IReadOnlyList<string> FileExtensions => _fileExtensions;
3234
public bool IsResource => _isResource;
35+
public string DataType => _dataType;
3336
}
3437

3538
private const string SettingsPath = "Assets/ResourceGenerator.asset";
@@ -77,13 +80,13 @@ private static List<ResourceData> CreateDefaultFileMappings() =>
7780
// https://docs.unity3d.com/Manual/BuiltInImporters.html
7881
new List<ResourceData>
7982
{
80-
new ResourceData("Scenes", new[]{"*.unity"}, false),
81-
new ResourceData("Prefabs", new[]{"*.prefab"}, true),
82-
new ResourceData("Materials", new[]{"*.mat"}, true),
83-
new ResourceData("AudioClips", new[]{"*.ogg", "*.aif", "*.aiff", "*.flac", "*.mp3", "*.mod", "*.it", "*.s3m", "*.xm", "*.wav"}, true),
84-
new ResourceData("Sprites", new[]{"*.jpg", "*.jpeg", "*.tif", "*.tiff", "*.tga", "*.gif", "*.png", "*.psd", "*.bmp", "*.iff", "*.pict", "*.pic", "*.pct", "*.exr", "*.hdr"}, true),
85-
new ResourceData("TextAssets", new[]{"*.txt", "*.html", "*.htm", "*.xml", "*.bytes", "*.json", "*.csv", "*.yaml", "*.fnt"}, true),
86-
new ResourceData("Fonts", new[]{"*.ttf", "*.dfont", "*.otf", "*.ttc"}, true)
83+
new ResourceData("Scenes", new[]{"*.unity"}, false, "Scene"),
84+
new ResourceData("Prefabs", new[]{"*.prefab"}, true, "GameObject"),
85+
new ResourceData("Materials", new[]{"*.mat"}, true, "Material"),
86+
new ResourceData("AudioClips", new[]{"*.ogg", "*.aif", "*.aiff", "*.flac", "*.mp3", "*.mod", "*.it", "*.s3m", "*.xm", "*.wav"}, true, "AudioClip"),
87+
new ResourceData("Sprites", new[]{"*.jpg", "*.jpeg", "*.tif", "*.tiff", "*.tga", "*.gif", "*.png", "*.psd", "*.bmp", "*.iff", "*.pict", "*.pic", "*.pct", "*.exr", "*.hdr"}, true, "Sprite"),
88+
new ResourceData("TextAssets", new[]{"*.txt", "*.html", "*.htm", "*.xml", "*.bytes", "*.json", "*.csv", "*.yaml", "*.fnt"}, true, "TextAsset"),
89+
new ResourceData("Fonts", new[]{"*.ttf", "*.dfont", "*.otf", "*.ttc"}, true, "Font")
8790
};
8891

8992
[SettingsProvider]

UnityResourceGenerator/Assets/ResourceGenerator.asset

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,17 @@ MonoBehaviour:
2222
_fileExtensions:
2323
- '*.unity'
2424
_isResource: 0
25+
_dataType: Scene
2526
- _className: Prefabs
2627
_fileExtensions:
2728
- '*.prefab'
2829
_isResource: 1
30+
_dataType: GameObject
2931
- _className: Materials
3032
_fileExtensions:
3133
- '*.mat'
3234
_isResource: 1
35+
_dataType: Material
3336
- _className: AudioClips
3437
_fileExtensions:
3538
- '*.ogg'
@@ -43,6 +46,7 @@ MonoBehaviour:
4346
- '*.xm'
4447
- '*.wav'
4548
_isResource: 1
49+
_dataType: AudioClip
4650
- _className: Sprites
4751
_fileExtensions:
4852
- '*.jpg'
@@ -61,6 +65,7 @@ MonoBehaviour:
6165
- '*.exr'
6266
- '*.hdr'
6367
_isResource: 1
68+
_dataType: Sprite
6469
- _className: TextAssets
6570
_fileExtensions:
6671
- '*.txt'
@@ -73,10 +78,12 @@ MonoBehaviour:
7378
- '*.yaml'
7479
- '*.fnt'
7580
_isResource: 1
81+
_dataType: TextAsset
7682
- _className: Fonts
7783
_fileExtensions:
7884
- '*.ttf'
7985
- '*.dfont'
8086
- '*.otf'
8187
- '*.ttc'
8288
_isResource: 1
89+
_dataType: Font

0 commit comments

Comments
 (0)