UGUI multiple을 통해 분할된 이미지를 동적으로 전환

2203 단어 uGUIUnity

대상


· 케민 소프트웨어를 이용한 간편한 스피릿팩커 방법http://caitsithware.com/wordpress/archives/263
• spriteMode를 멀티플렉스로 만들고 싶은 사람

차리다


· Resources 폴더 만들기
・multiple을 통해 분할된 그림을 상기 폴더에 넣기

※ 분할 방법은 생략합니다.원한다면 다시 한 번 보충하겠습니다

넣다


• 여러 개의 할당된 1장의 그림을 하나하나 분리해서 읽기
・↑ 그리고 Dictionaly로 읽는 것 관리
・ 대상 이미지는 Resuorse 폴더 아래에 있어야 합니다.
    static Dictionary<string, Dictionary<string, Sprite>> spriteMstDic 
        = new Dictionary<string, Dictionary<string, Sprite>>();



    //読み込み;
    static void loadSprite(string atlasName)
    {
        if(spriteMstDic.ContainsKey(atlasName))return;

        Sprite[] s = Resources.LoadAll<Sprite>(atlasName);
        int len = s.Length;        
        if(len > 0){

            Dictionary<string , Sprite> sDic = new Dictionary<string,Sprite>();

            for( int i = 0 ; i < len ; i++){
                sDic[s[i].name] = s[i];
            }
            spriteMstDic[atlasName] = sDic;

            Debug.Log(atlasName + "アトラスを読み込みました");
        }

사용


・ 아틀라스의 이름과 분할된 이름을 원하는 그림 획득하기;
• 예: 아틀라스 이름:sprite Atlas sprite 이름:texture001 ← 파일 이름이 헷갈려서 이해하기 어려워
    static Sprite getSprite( string atlasName , string spriteName)
    {
        //既に登録されているならそのまま返す;
        if (spriteMstDic.ContainsKey(atlasName))
        {
            Dictionary<string , Sprite> sDic = spriteMstDic[atlasName];
            if(sDic.ContainsKey(spriteName)){
                return sDic[spriteName];
            }else{
                Debug.Log(atlasName + "に" + spriteName + "は含まれていません");
                return null;
            }
        }
        else
        {
            // 読み込んでおく
            loadAtlas(atlasName);
            //再度呼び出してみる;
            return getSprite(atlasName , spriteName);
        }
    }


좋은 웹페이지 즐겨찾기