Resources.열거(Enum)로 Load 편집기 확장 가능

12950 단어 확장성UnityC#

기능


경로 가져오기 기능


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.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.cs
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" };
        }
    }
}
분류도로 표시하면 ↓이다.
 

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

좋은 웹페이지 즐겨찾기