Resources.열거(Enum)로 Load 편집기 확장 가능
기능
경로 가져오기 기능
Enum에서 Resources 폴더의 자산 경로를 지정하면 됩니다.
모든 자산에서 취득하고'Texture'의 유형에서 취득한다.
자원 읽기 기능
Enum을 사용하여 Resources 폴더 내의 자산을 지정하여 읽습니다.
모든 자산에서 읽을 수 있고'Texture'유형에서 읽을 수 있습니다.
사용법
스크립트를 사용할 Unity 항목으로 이동
주체: https://github.com/Tanakancolle/DogProject
의존성: https://github.com/Tanakancolle/Core
의 두 개를 Unity 프로젝트의 Asseets에 배치합니다.
GTI를 사용하면 보조 모듈로 가져오는 게 편할 거예요.
창 열기
메뉴 모음에서 Tools/Resources Loader를 클릭하여 창을 엽니다.
생성할 경로 지정
창의 [경로 생성]에 스크립트를 생성할 경로를 입력합니다.
생성 시작
창에서 OK 버튼을 클릭하면 스크립트가 생성됩니다.
↓ Resources 내의 폴더 구성
↓생성된 스크립트
ResourcesLoader.csusing UnityEngine;
public static class ResourcesLoader
{
#region Resources
public enum eResources
{
TestTexture
}
private static readonly string[] ResourcesPaths = new string[]
{
"test/TestTexture"
};
public static string GetResourcesName(eResources type)
{
return ResourcesPaths[(int)type];
}
public static T LoadResources<T>(eResources type) where T : Object
{
return Resources.Load<T> (GetResourcesName (type));
}
#endregion
#region Texture
public enum eTexture
{
TestTexture
}
private static readonly string[] TexturePaths = new string[]
{
"test/TestTexture"
};
public static string GetTextureName(eTexture type)
{
return TexturePaths[(int)type];
}
public static Texture LoadTexture(eTexture type)
{
return Resources.Load<Texture> (GetTextureName (type));
}
#endregion
#region Sound
public enum eSound
{
dummy
}
private static readonly string[] SoundPaths = new string[]
{
"dummy"
};
public static string GetSoundName(eSound type)
{
return SoundPaths[(int)type];
}
public static AudioClip LoadSound(eSound type)
{
return Resources.Load<AudioClip> (GetSoundName (type));
}
#endregion
}
※ 대상이 없을 때는 "dummy"사용
※ Enum명 사용은 자산명에서 확장명을 생략
생성된 스크립트에서 자산 읽기
모든 자산에 공통된 읽기 방법
자산은 ↓처럼 읽을 수 있다.TestTexture.png을 읽고 있습니다.var texture = ResourcesLoader.LoadResources<Texture> (ResourcesLoader.eResources.TestTexture);
Texture 전용 읽기 방법
각 유형의 읽기도 있습니다.여기도'Test Texture.png'이 읽힌다.var texture = ResourcesLoader.LoadTexture (ResourcesLoader.eTexture.TestTexture);
모든 종류의 읽기에 관해서는 Texture 외에 오디오클립도 있습니다.
확장성
Texture와 AudioClip과 같은 다양한 유형의 읽기 객체를 추가하는 방법입니다.
대략적인 동작 설명
우선 이 기능이 어떻게 작동하는지 대체적으로 설명한다.
분류도
이 기능의 대략적인 분류도입니다.
여기서 주목하고 싶은 것은'Iloader Parameter'와'Iloader Editor'다.
IloaderParameter 정보
이 인터페이스는 정보를 제공하는 인터페이스다.
인터페이스를 상속하는 클래스는 Resources 폴더의 객체 자산 등을 지정합니다.
이 Interfes가 제공하는 것은
/대상자 전체의 이름
• 개체 확장자
• 객체 유형 이름
라고 적었다.
IloaderEditor 정보
이 인터페이스는 생성할 스크립트 내용을 설명하는 인터페이스입니다.
이 인터페이스를 계승하는 클래스는 "IloaderParameter"에서 받은 정보에 따라 스크립트의 내용을 설명합니다.
각 유형의 읽기 객체 추가
IloaderParameter를 상속하는 범주 만들기
IloaderParameter를 상속하는 범주를 만듭니다.
예를 들어, TextAsset 객체에 대한 읽기를 추가합니다.
TestAssetLoader Parameter 클래스를 생성합니다.
TestAssetLoaderParameter.csnamespace EditorCreate
{
public class TextAssetLoaderParameter : ILoaderParameter
{
public string GetName()
{
return "TextAsset";
}
public string[] GetTargetExtensions()
{
return new string[] {
"txt","html","htm","xml","bytes","json","csv","yaml","fnt"
};
}
public string GetTypeName()
{
return GetName ();
}
public string[] GetUsings()
{
return new string[] { "UnityEngine" };
}
}
}
분류도로 표시하면 ↓이다.
ResourcesLoader Creater 클래스에 생성된 클래스 추가
ResourcesLoader Creater 클래스의 parameters에서 만든 범주를 추가합니다.private ILoaderParameter[] parameters = new ILoaderParameter[] {
new AllLoaderParameter(),
new TextureLoaderParameter(),
new AudioClipLoaderParameter(),
new TextAssetLoaderParameter(), // 追加
};
위에서 자동으로 생성한 스크립트에서 TextAsset을 객체로 만드는 방법입니다.
• TextAsset 의 경로 가져오기var path = ResourcesLoader.GetTextAssetName (ResourcesLoader.eTextAsset.TestText);
• TextAsset 읽기var text_asset = ResourcesLoader.LoadTextAsset (ResourcesLoader.eTextAsset.TestText);
주의점
잘못된 패턴이 있습니다.
※ 스크립트는 생성되지만 오류가 발생합니다
확장자가 생략된 파일 이름이 같은 이름으로 변경되는 경우
예를 들어, Resources 폴더에 "Test.png"및 "Test.mp3"파일이 있는 경우
성명할 때 사용하는 이름은 파일 이름에서 확장자를 생략하여 같은 이름을 초래하여 오류가 발생했습니다.
모든 자산에서 읽을 수 없음
ResourcesLoader Creater 클래스의 parameters에서 AllLoader Parameter를 제거하면 오류가 발생하지 않습니다.
변환된 enum 이름이 같은 이름으로 바뀌는 경우
만약 파일 이름에 enum에서 사용할 수 없는 문자가 포함되어 있다면 "변경합니다.
이름을 바꾸면 오류가 발생합니다.
예) 같은 이름의 오류
파일 이름: 1Test.png → _Test
파일 이름: 2Test.png → _Test
Git
이 기능의 Giit입니다.
주체: https://github.com/Tanakancolle/DogProject
의존성: https://github.com/Tanakancolle/Core
Reference
이 문제에 관하여(Resources.열거(Enum)로 Load 편집기 확장 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tanakancolle/items/db5f9984a1c19ccd085f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
스크립트를 사용할 Unity 항목으로 이동
주체: https://github.com/Tanakancolle/DogProject
의존성: https://github.com/Tanakancolle/Core
의 두 개를 Unity 프로젝트의 Asseets에 배치합니다.
GTI를 사용하면 보조 모듈로 가져오는 게 편할 거예요.
창 열기
메뉴 모음에서 Tools/Resources Loader를 클릭하여 창을 엽니다.
생성할 경로 지정
창의 [경로 생성]에 스크립트를 생성할 경로를 입력합니다.
생성 시작
창에서 OK 버튼을 클릭하면 스크립트가 생성됩니다.
↓ Resources 내의 폴더 구성
↓생성된 스크립트
ResourcesLoader.cs
using UnityEngine;
public static class ResourcesLoader
{
#region Resources
public enum eResources
{
TestTexture
}
private static readonly string[] ResourcesPaths = new string[]
{
"test/TestTexture"
};
public static string GetResourcesName(eResources type)
{
return ResourcesPaths[(int)type];
}
public static T LoadResources<T>(eResources type) where T : Object
{
return Resources.Load<T> (GetResourcesName (type));
}
#endregion
#region Texture
public enum eTexture
{
TestTexture
}
private static readonly string[] TexturePaths = new string[]
{
"test/TestTexture"
};
public static string GetTextureName(eTexture type)
{
return TexturePaths[(int)type];
}
public static Texture LoadTexture(eTexture type)
{
return Resources.Load<Texture> (GetTextureName (type));
}
#endregion
#region Sound
public enum eSound
{
dummy
}
private static readonly string[] SoundPaths = new string[]
{
"dummy"
};
public static string GetSoundName(eSound type)
{
return SoundPaths[(int)type];
}
public static AudioClip LoadSound(eSound type)
{
return Resources.Load<AudioClip> (GetSoundName (type));
}
#endregion
}
※ 대상이 없을 때는 "dummy"사용※ Enum명 사용은 자산명에서 확장명을 생략
생성된 스크립트에서 자산 읽기
모든 자산에 공통된 읽기 방법
자산은 ↓처럼 읽을 수 있다.TestTexture.png을 읽고 있습니다.
var texture = ResourcesLoader.LoadResources<Texture> (ResourcesLoader.eResources.TestTexture);
Texture 전용 읽기 방법
각 유형의 읽기도 있습니다.여기도'Test Texture.png'이 읽힌다.
var texture = ResourcesLoader.LoadTexture (ResourcesLoader.eTexture.TestTexture);
모든 종류의 읽기에 관해서는 Texture 외에 오디오클립도 있습니다.확장성
Texture와 AudioClip과 같은 다양한 유형의 읽기 객체를 추가하는 방법입니다.
대략적인 동작 설명
우선 이 기능이 어떻게 작동하는지 대체적으로 설명한다.
분류도
이 기능의 대략적인 분류도입니다.
여기서 주목하고 싶은 것은'Iloader Parameter'와'Iloader Editor'다.
IloaderParameter 정보
이 인터페이스는 정보를 제공하는 인터페이스다.
인터페이스를 상속하는 클래스는 Resources 폴더의 객체 자산 등을 지정합니다.
이 Interfes가 제공하는 것은
/대상자 전체의 이름
• 개체 확장자
• 객체 유형 이름
라고 적었다.
IloaderEditor 정보
이 인터페이스는 생성할 스크립트 내용을 설명하는 인터페이스입니다.
이 인터페이스를 계승하는 클래스는 "IloaderParameter"에서 받은 정보에 따라 스크립트의 내용을 설명합니다.
각 유형의 읽기 객체 추가
IloaderParameter를 상속하는 범주 만들기
IloaderParameter를 상속하는 범주를 만듭니다.
예를 들어, TextAsset 객체에 대한 읽기를 추가합니다.
TestAssetLoader Parameter 클래스를 생성합니다.
TestAssetLoaderParameter.csnamespace EditorCreate
{
public class TextAssetLoaderParameter : ILoaderParameter
{
public string GetName()
{
return "TextAsset";
}
public string[] GetTargetExtensions()
{
return new string[] {
"txt","html","htm","xml","bytes","json","csv","yaml","fnt"
};
}
public string GetTypeName()
{
return GetName ();
}
public string[] GetUsings()
{
return new string[] { "UnityEngine" };
}
}
}
분류도로 표시하면 ↓이다.
ResourcesLoader Creater 클래스에 생성된 클래스 추가
ResourcesLoader Creater 클래스의 parameters에서 만든 범주를 추가합니다.private ILoaderParameter[] parameters = new ILoaderParameter[] {
new AllLoaderParameter(),
new TextureLoaderParameter(),
new AudioClipLoaderParameter(),
new TextAssetLoaderParameter(), // 追加
};
위에서 자동으로 생성한 스크립트에서 TextAsset을 객체로 만드는 방법입니다.
• TextAsset 의 경로 가져오기var path = ResourcesLoader.GetTextAssetName (ResourcesLoader.eTextAsset.TestText);
• TextAsset 읽기var text_asset = ResourcesLoader.LoadTextAsset (ResourcesLoader.eTextAsset.TestText);
주의점
잘못된 패턴이 있습니다.
※ 스크립트는 생성되지만 오류가 발생합니다
확장자가 생략된 파일 이름이 같은 이름으로 변경되는 경우
예를 들어, Resources 폴더에 "Test.png"및 "Test.mp3"파일이 있는 경우
성명할 때 사용하는 이름은 파일 이름에서 확장자를 생략하여 같은 이름을 초래하여 오류가 발생했습니다.
모든 자산에서 읽을 수 없음
ResourcesLoader Creater 클래스의 parameters에서 AllLoader Parameter를 제거하면 오류가 발생하지 않습니다.
변환된 enum 이름이 같은 이름으로 바뀌는 경우
만약 파일 이름에 enum에서 사용할 수 없는 문자가 포함되어 있다면 "변경합니다.
이름을 바꾸면 오류가 발생합니다.
예) 같은 이름의 오류
파일 이름: 1Test.png → _Test
파일 이름: 2Test.png → _Test
Git
이 기능의 Giit입니다.
주체: https://github.com/Tanakancolle/DogProject
의존성: https://github.com/Tanakancolle/Core
Reference
이 문제에 관하여(Resources.열거(Enum)로 Load 편집기 확장 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tanakancolle/items/db5f9984a1c19ccd085f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
namespace EditorCreate
{
public class TextAssetLoaderParameter : ILoaderParameter
{
public string GetName()
{
return "TextAsset";
}
public string[] GetTargetExtensions()
{
return new string[] {
"txt","html","htm","xml","bytes","json","csv","yaml","fnt"
};
}
public string GetTypeName()
{
return GetName ();
}
public string[] GetUsings()
{
return new string[] { "UnityEngine" };
}
}
}
new AllLoaderParameter(),
new TextureLoaderParameter(),
new AudioClipLoaderParameter(),
new TextAssetLoaderParameter(), // 追加
};
잘못된 패턴이 있습니다.
※ 스크립트는 생성되지만 오류가 발생합니다
확장자가 생략된 파일 이름이 같은 이름으로 변경되는 경우
예를 들어, Resources 폴더에 "Test.png"및 "Test.mp3"파일이 있는 경우
성명할 때 사용하는 이름은 파일 이름에서 확장자를 생략하여 같은 이름을 초래하여 오류가 발생했습니다.
모든 자산에서 읽을 수 없음
ResourcesLoader Creater 클래스의 parameters에서 AllLoader Parameter를 제거하면 오류가 발생하지 않습니다.
변환된 enum 이름이 같은 이름으로 바뀌는 경우
만약 파일 이름에 enum에서 사용할 수 없는 문자가 포함되어 있다면 "변경합니다.
이름을 바꾸면 오류가 발생합니다.
예) 같은 이름의 오류
파일 이름: 1Test.png → _Test
파일 이름: 2Test.png → _Test
Git
이 기능의 Giit입니다.
주체: https://github.com/Tanakancolle/DogProject
의존성: https://github.com/Tanakancolle/Core
Reference
이 문제에 관하여(Resources.열거(Enum)로 Load 편집기 확장 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Tanakancolle/items/db5f9984a1c19ccd085f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Resources.열거(Enum)로 Load 편집기 확장 가능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Tanakancolle/items/db5f9984a1c19ccd085f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)