[Unity] 특정dir 이하의 파일을 통일적으로 연결하는 식단[Editor 확장]
Unity에서 Object를 연결하는 것은 매우 번거롭다
특정 Object에서 이미지 또는 prefab을 사용하는 경우
Resources.Load, AsseetBund 등 다양한 방법이 있어요.
여러 가지 이유로'아직 쓸 수 없다'는 경우도 있다.
신지현: 앞으로도 AssetBundle...같은거?
아무튼 빨리 움직이게 놔두고... 이렇게 미리 퍼블릭을 만들면...
[창의]: 이미지가 추가되었습니다.
[시스템]: 네.
[시스템]: (그럼... 링크를 업데이트하시겠습니까...)
이렇게 되다니.
이럴 땐 이걸로!
버튼을 눌러서 같이 넣으면 좋잖아!
Inspector에서 버튼 만들기
(Unity Inspector에서 버튼 만들기 이거 참조)
GameImgHolder.csusing UnityEngine;
using System.Collections;
using System.Collections.Generic;
#if UNITY_EDITOR
using UnityEditor;
using System.Linq;
#endif
public class GameImgHolder : MonoBehaviour {
public List<Sprite> imgList;
#if UNITY_EDITOR
[Button("SetupImg" , "Setup Image")]
public int SetupImgButton;
void SetupImg(){
// path , imgdir
string prefabPath = "Assets/Prefab/GameManager.prefab";
string imgDir = "Assets/Images/Test";
GameManager gm = AssetDatabase.LoadAssetAtPath(prefabPath , typeof(GameManager)) as GameManager;
GameImgHolder imgHolder = gm.GetComponent<GameImgHolder>();
// 各ファイルパス GUIDからを重複しないように取得
var guids = AssetDatabase.FindAssets("" , new string[]{imgDir});
var pathList = guids.ToList().Select(guid => AssetDatabase.GUIDToAssetPath(guid)).Distinct();
// sprite load
var sprites = pathList.Select(path => AssetDatabase.LoadAssetAtPath(path , typeof(Sprite)) as Sprite);
imgHolder.imgList = sprites.ToList();
// 変更があったことをUnityに知らせる必要があり、
// そのため、このオブジェクトのダーティフラグをセットする
EditorUtility.SetDirty(gm);
AssetDatabase.SaveAssets();
// // Hierarchy上に配置されているオブジェクトにも反映
PrefabUtility.RevertPrefabInstance(GameManager.Instance.gameObject);
#endif
}
이렇게 사용 가능합니다.
이 예는 스피릿이 만든 거예요.
TextAsset이든 Prefab(GameObject)이든 뭐든 할 수 있어 편리하다.
스스로 누를 수도 있고 창의적인 쪽에서 누를 수도 있다.
(충돌 조심!)
Reference
이 문제에 관하여([Unity] 특정dir 이하의 파일을 통일적으로 연결하는 식단[Editor 확장]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuuki_yomenaio/items/776d965c9b712f2b44a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
버튼을 눌러서 같이 넣으면 좋잖아!
Inspector에서 버튼 만들기
(Unity Inspector에서 버튼 만들기 이거 참조)
GameImgHolder.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
#if UNITY_EDITOR
using UnityEditor;
using System.Linq;
#endif
public class GameImgHolder : MonoBehaviour {
public List<Sprite> imgList;
#if UNITY_EDITOR
[Button("SetupImg" , "Setup Image")]
public int SetupImgButton;
void SetupImg(){
// path , imgdir
string prefabPath = "Assets/Prefab/GameManager.prefab";
string imgDir = "Assets/Images/Test";
GameManager gm = AssetDatabase.LoadAssetAtPath(prefabPath , typeof(GameManager)) as GameManager;
GameImgHolder imgHolder = gm.GetComponent<GameImgHolder>();
// 各ファイルパス GUIDからを重複しないように取得
var guids = AssetDatabase.FindAssets("" , new string[]{imgDir});
var pathList = guids.ToList().Select(guid => AssetDatabase.GUIDToAssetPath(guid)).Distinct();
// sprite load
var sprites = pathList.Select(path => AssetDatabase.LoadAssetAtPath(path , typeof(Sprite)) as Sprite);
imgHolder.imgList = sprites.ToList();
// 変更があったことをUnityに知らせる必要があり、
// そのため、このオブジェクトのダーティフラグをセットする
EditorUtility.SetDirty(gm);
AssetDatabase.SaveAssets();
// // Hierarchy上に配置されているオブジェクトにも反映
PrefabUtility.RevertPrefabInstance(GameManager.Instance.gameObject);
#endif
}
이렇게 사용 가능합니다.
이 예는 스피릿이 만든 거예요.
TextAsset이든 Prefab(GameObject)이든 뭐든 할 수 있어 편리하다.
스스로 누를 수도 있고 창의적인 쪽에서 누를 수도 있다.
(충돌 조심!)
Reference
이 문제에 관하여([Unity] 특정dir 이하의 파일을 통일적으로 연결하는 식단[Editor 확장]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuuki_yomenaio/items/776d965c9b712f2b44a9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Unity] 특정dir 이하의 파일을 통일적으로 연결하는 식단[Editor 확장]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuuki_yomenaio/items/776d965c9b712f2b44a9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)