728x90 Utils28 NGUI Custom Extension Tool 🛠NGUI Custom Extension Tool🛠 NGUI와 UGUI를 융화 시켜주는 강력한 패키지입니다. 기능은 아래와 같습니다. NGUI에서 파티클 시스템 및 스파인 캐릭터 등 뎁스 조절 가능 NGUI에서 파티클 시스템 및 스파인 캐릭터 등 패널의 클리핑 영역 마스킹 처리 가능 1. UIPanel 클리핑 예제 패널 및 스크롤뷰에서 마스킹 기능을 사용하여, 기존 NGUI와 같이 사용이 가능합니다. "UIPanel"을 추가한다. "LayerMask"를 추가한다. 필요한 경우 레이어 마스크를 추가해준다. 2. 뎁스 조절 기능 기존 NGUI와 유연하게 사용할 수 있다.위의 이미지와 같이 뎁스 조절이 가능하며, 스파인 캐릭터도 가능합니다. 마무리 여기저기 알아보면, 클리핑 관련되어서 스텐실 셰이더가 나오며,.. 2022. 3. 24. Unity, 화면 스크린 캡쳐 스크린 캡쳐 실행 중인 게임에서 스크린샷을 찍을 때 사용되는 코드입니다. 코드 /// /// 스크린샷 저장 /// /// 텍스쳐 생성 콜백 /// private IEnumerator Screenshot(Action onFinished) { yield return new WaitForEndOfFrame(); // 텍스쳐 생성 Texture2D screenTex = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); // 스크린샷 영역 설정 Rect area = new Rect(0f, 0f, Screen.width, Screen.height); // 현재 화면의 픽셀을 읽어온다. screenTex.ReadPixels(area, 0,.. 2022. 3. 5. Unity, Animator 상태 변환 완료 때까지 기다리기 (확장함수) 애니메이터 사용 중, 애니메이터 상태 변환 완료 이후 시점에 처리가 필요한 경우가 있습니다. 아래의 스크립트를 추가하면, 확장 함수로 편하게 사용 가능합니다. 우리가 필요로 하는 기능 animator.SetTrigger("Die"); 캐릭터가 죽고 나서 보여지는 애니메이션 이후, 해당 상태가 완전히 끝나고 나서 처리가 필요하지만, 이는 유니티에서 지원하지 않습니다. 보통은 AnimationEvent 달아 주어 처리를 하거나, 특정을 직접 입력하여 처리를 합니다. animator.SetTrigger("Die", () => { // 스테이트가 종료된 이후 호출되는 구간 this.gameObject.SetActive(false); }); 위와 같이, 애니메이션 종료 이후 타이밍을 얻게 되며, 추가 적인 처리가.. 2022. 2. 23. C#, DateTime 이번 달의 첫날, 말일 구하기 스크립트 public static class Utils { /// /// 이번달의 첫번째 날 가져오기 /// /// /// public static DateTime MonthFirstDay(this DateTime dateTime) { return dateTime.AddDays(1 - dateTime.Day).Date; } /// /// 말일 구하기 /// /// /// public static DateTime MonthLastDay(this DateTime dateTime) { return dateTime.MonthFirstDay().AddMonths(1).AddDays(-1); } } 확장함수로 구현되었습니다. 해당 기능은 기존 DateTime에서 이용할 수 있습니다. 개념 첫 날 (초하루) - 현재.. 2022. 1. 25. C#, 커스텀 밴치마크 라이브러리 (함수 테스트 도구) 간혹 작업 중, '어떤 방식이 효율이 있는지?' 또는 '구글링이나 공부를 통해서 알게된 부분들이 실제로 속도가 어떤지?'가 궁금할 때가 있습니다. 간단하게 코드를 만들어서 테스트하고 싶지만, 매번 새로운 프로젝트를 따로 만들거나 해야하는 번거로움이 있습니다. 위와 같은 고충을 해결하기 위해, 간단하게 작은 라이브러리를 만들었습니다. 기존 MS에서도 지원하는 Benchmark를 모방한 커스텀 밴치마크 스크립트입니다. 굳이 모방을 한 이유는 라이브러리 따로 추가를 해야하고, 릴리즈 모드에서만 작동되고 하는 번거로움이 있으며, 간단하게 실행속도 및 빠른지의 비교에 관련된 부분이 미흡하여 따로 작성하였습니다. 밴치마크 Benchmark.cs 스크립트 더보기 더보기 using System; using System.. 2022. 1. 16. 유니티, 코루틴 최적화(Coroutine Yield Instruction) 매번 생성된는 반복기 타이밍 코루틴의 경우 잦은 new() 생성, 메모리 할당으로 인해 불필요한 메모리를 차지합니다. private IEnumerator CountDown(int startTime) { while (true) { timerText.text = (startTime--).ToString(); yield return new WaitForSeconds(1f); if (startTime 2021. 12. 23. C#, Enum.GetMoveNext() 확장함수로 다음 값으로 넘기기 개인적으로 작업을 하다가 선언한 Enum값을 하나씩 넘겨야하는 작업이 생겼습니다. 그래서 반복문, 배열 처리가 아닌 단순히 함수 Enumerator.MoveNext()처럼 하나씩 넘기면 좋겠다는 생각에 아래와 코드를 만들었습니다. /// /// Enum 다음값 가져오기 /// /// /// /// public static T GetMoveNext(this T source) where T : System.Enum { var array = System.Enum.GetValues(typeof(T)); for (int i = 0; i < array.Length - 1; i++) { if (source.Equals(array.GetValue(i))) return (T)array.GetValue(i + 1); } .. 2021. 12. 21. C#, Description 통한 Enum 관리하기 Enum을 통한 일반적인 관리 방법 Enum을 통한 여러가지 관리 방법이 있습니다. 그 중에서 Description 어트리뷰트를 사용한 관리를 다루고자합니다. public enum File { Install, Image1, Image2, Image3, EXE, } 위와 같이 각 파일을 지칭하는 Enum이 있고, 우리는 해당 값을 이용하여 파일 주소를 가져오고자 할 경우, 대체적으로 함수를 통해 처리를 합니다. private string GetFilePath(File file) { switch (file) { case File.Install: return "Project/Release/Insall.exe"; case File.Image1: return "Project/Resources/Images/1.jp.. 2021. 12. 19. C#, 확장함수를 이용하여 Collection<T> First, Last 가져오기 스크립트를 작성하다보면 아래와 같은 상황이 자주 연출됩니다. private static void Function() { List list = new List(); list.Add(0); list.Add(1); list.Add(2); list.Add(3); list.Add(4); var first = list[0]; var last = list[list.Count - 1]; } 코드에는 아무런 문제가 없지만, 가독성에 있어서 적합하지 않습니다. 또한 위의 코드처럼 특정 Collection뿐만이 아니라 Collection마다 First, Last를 가져오는 방식은 여러가지입니다. private static void Function() { Dictionary dic = new Dictionary(); dic... 2021. 12. 19. 이전 1 2 3 4 다음 반응형