unity C#
[Unity] 로컬파일 불러오기(안드로이드, mac, pc)
bamsik
2019. 6. 18. 15:01
반응형
간혹 빌드가 끝나고나서 특정 이미지를 교체해야 하거나 영상을 바꿔야 되면 해당 비디오 파일 또는 이미지 파일을 교체 후 새롭게 빌드를 시켜야 하는 번거러운 작업을 해야할 경우가 생긴다.
교체해야할 상황이 빈번하다고 판단되는 프로젝트일 경우 특정 폴더에 교체 할 소스 파일을 넣어두고 해당 소스파일만 바꾸면 새로 빌드할 필요가 없게 미리 처리해 두면 될 것이다.
using System.Collections.Generic; using System.IO; using UnityEngine; public class FileItemHandler : MonoBehaviour { public string ParentFolderName; public string TargetFolderName; public List<string> FilePathList; public List<string> CoverPathList; public List<Texture2D> CoverSpriteList; string filepath; void Awake () { GetPathList (); } void GetPathList () { string _path = ""; //타켓 폴더 패스 설정 if (Application.platform == RuntimePlatform.Android) { //android일 경우 // _path = AndroidRootPath () + "Download/FH/" + ParentFolderName + "/" + TargetFolderName; } else { //unity일 경우 // _path = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal) + "/Desktop/FH/" + ParentFolderName + "/" + TargetFolderName; } DirectoryInfo Folder = new DirectoryInfo (_path); //각 비디오의 패스(URL) 리스트 만들기 foreach (var file in Folder.GetFiles ()) { if (file.Extension != ".meta" && file.Extension != ".DS_Store") { //비디오 이외의 확장자를 가진 파일 제외시키기 filepath = _path + "/" + file.Name; if (!filepath.Contains ("._")) { //파일명 에러 수정해주기 // filepath = filepath.Replace ("._", ""); if (filepath.Contains (".mp4")) //비디오 파일 add 리스트 FilePathList.Add (filepath); else if (filepath.Contains (".jpg")) { //커버이미지 파일 add 리스트 CoverPathList.Add (filepath); Texture2D tex = null; byte[] filedata; if (File.Exists (filepath)) { filedata = File.ReadAllBytes (filepath); tex = new Texture2D (2, 2); tex.LoadImage (filedata); // Sprite sp = SpriteFromTexture2D (tex); CoverSpriteList.Add (tex); } } } } } Debug.Log(ParentFolderName + "/" + TargetFolderName + ", FileCount : " + FilePathList.Count+ ",, SpriteCount : " + CoverSpriteList.Count); } string AndroidRootPath () { string[] temp = (Application.persistentDataPath.Replace ("Android", "")).Split (new string[] { "//" }, System.StringSplitOptions.None); return (temp[0] + "/"); } Sprite SpriteFromTexture2D (Texture2D texture) { return Sprite.Create (texture, new Rect (0.0f, 0.0f, texture.width, texture.height), new Vector2 (0.5f, 0.5f), 100.0f); } }
반응형