반응형 개발879 Unity) Main Thread Dispactcher (메인 쓰레드에서 사용하기) Main Thread Dispactcher (메인 쓰레드에서 사용하기) Unity 에서 어떤 동작을 다시 하기 위해서는 메인 쓰레드에서 동작을 하지 않으면 문제가 생기는 경우가 종종 생긴다.확정적으로 Unity의 메인 쓰레드에서 동작하는것을 보장하기 위한 코드이다. using UnityEngine;using System.Collections;using System.Collections.Generic;using System;using System.Threading.Tasks; public class UnityMainThreadDispatcher : MonoBehaviour { private static readonly Queue _executionQueue = new Queue(); public vo.. 2025. 1. 27. Unity Editor) Animator Preview 기능 만들기 Animator Preview 기능 만들기 Animator 는 Animation의 여러가지 상태를 자연스럽게 변경을 하는 과정에서 사용을 한다.그 과정에서 Animator의 Window를 켜서 해당 Animation을 선택해서 실행하는것이 너무 불편해서 Preview Editor를 만들었다. 애니메이션의 전환된 상태까지 확인하면 참 좋긴한데.너무 복잡해서 간단하게 Animation 선택 기능, Animation Speed(Time Scale) / Animation Frame을 확인할수 있도록 작업했다. Preview의 기능도 포함되어있기 때문에 해당 Animation을 초기화 시키는 Reset도 추가했다. 개발 하는 과정에서 좀 더 편하게 Animator를 확인이 가능하다. ★★★☆☆ 2025. 1. 15. Unity) 곡선으로 이동 구현 하기(베지어 곡선, 스플라인곡선:Curve Point) 곡선으로 이동 구현 하기(베지어 곡선, 스플라인곡선:Curve Point) 여러가지 움직임을 구현하기 위해서 대표적인 곡선 2가지(베지어, 스플라인) 2 가지 형태를 테스트 했다. 포인트점은 간단하게 마우스 오른쪽으로 포인트 추가 / 근처의 포인트가 있으면 삭제의 메뉴가 나오고 해당 포인트를 선택해서 이동이 가능하게 구현했다. 베지어 곡선은 총 4개의 포인트를 기반으로 커브를 생성하는 가장 기본적인 곡선구현 방법이다.시작점 / 끝점 사이의 중간 제어점들이 곡선형태를 끌어당기듯이 영향을 미친다.각 구간의 연결점으로 이어지고 4개의 제어점으로 곡선을 정의한다.복잡하고 자연스러운 곡선을 만들때 자주 사용한다. 특징베지어 곡선곡선스플라인 구성 방식하나의 곡선(모든 제어점이 하나의 곡선에 영향).여러 구간.. 2025. 1. 13. Unity) 빌드 전/후 처리 순서 확인(IprepreocessBuildWithReport, PostProcessBuildAttribute) 빌드 전/후 처리 순서 확인(IprepreocessBuildWithReport, PostProcessBuildAttribute) Unity 에서 빌드를 진행하다보면 전처리, 후처리 코드를 작성하는 경우가 있다.해당 전처리와 후처리 코드에서는 우선순위가 있는데 해당 우선순위를 간단하게 표시해주는 기능을 작업했다. Unity Doc - IPreprocessBuildWithReport : [링크] Unity - Scripting API: IPreprocessBuildWithReportSuccess! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we.. 2025. 1. 10. 문제해결)Git 명령어 에러 ~ Filename too long error Git 명령어 에러 ~ Filename too long error Git 에서 Push / Commit / Pull 등 여러가지 명령어를 사용하는 과정에서 다음과 같은 에러가 발생했다. 해결한 방법을 간단하게 포스팅한다.Window에서 Git 명령어를 사용하는 과정에서는 Window 파일 경로 제한(260자) 가 있어서 발생한다.따로 설정을 하지 않으면 해당 제한에 따라 다음과 같은 에러가 발생한다. Git 설정 변경으로 긴 경로를 허용하는 옵션 설정하는 방법으로터미널에서 다음과 같은 명령어를 입력한다.git config --global core.longpaths true git의 Global config 설정 파일의 경로에 다음과 같이 추가되면서 긴 경로의 파일도 사용이 가능하다.해당 파일은 다음과 같.. 2025. 1. 7. Unity) 런타임 프로파일링 (Capturing Profiler Stats at Runtime) 고도화 런타임 프로파일링 (Capturing Profiler Stats at Runtime) 고도화기존에 사용하던 런타임 프로파일링을 필요한 정보를 간략하게 처리해서 사용하기 위해서 코드 수정을 진행했다. 기존 코드 : [링크] Unity) 런타임 프로파일링 (Capturing Profiler Stats at Runtime)런타임 프로파일링 (Capturing Profiler Stats at Runtime)Unity로 개발을 진행하다보면 런타임 상황 / 플랫폼 및 실제 기기 에서 테스트하는 과정에서 여러가지를 개발적인 요소를 확인해야하는 상황drehzr.tistory.com 상황에 따라 3가지 레벨에 따라 프로파일링 정보를 노출하는 것을 제한했다.기본적으로는 FPS를 가장 기본으로 표시하는 필요에 따라 커스텀이.. 2025. 1. 6. 문제해결)Uniy)Failed to import package with error: Couldn't decompress package UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) Failed to import package with error: Couldn't decompress package UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) Unity Package를 Import 하는 과정에서 발생한 에러이다. 1. Package가 정상적이지 않는 경우2. Path 경로에 한글이나 해당 Unity Asset경로가 아닌경우 Package의 경로는 Import 하고자하는 Unity Project의 영어로 이름을 변경이후에 Import 하면 정상적으로 Import 진행이 된다. ★☆☆☆☆ 2025. 1. 6. 문제해결)Unity) Invaid AABB inAABB Invaid AABB inAABB 해당 오류는 주로 오브젝트의 경계(Bounds)가 유효하지 않거나 손상되었거나, 0인경우에 발생한다.대부분 UI의 요소와 관련이 있는 경우가 많고 Uniy 에서 경계를 계산하지 못하는 경우에 발생한다. RectTransform의 값이 0 또는 Nan인 경우잘못된 Scale 혹은 Roation인 경우손상된 Prefab 또는 Component UI 요소를 동적으로 수정하는 과정에서 발생순환적인 레이아웃 종속성 ★☆☆☆☆ 2025. 1. 5. 알고리즘) Fisher-Yates 알고리즘 Fisher-Yates 알고리즘 배열이나 리스트 같은 데이터 구조의 요소들을 무작위로 섞는 데 사용되는 알고리즘이다,균등하게 분포된 무작위 배열을 생성하는 데 효율적이고 널리 사용된다.단순하게 순차적으로 유지하면서 무작위로 선택된 이전 위치와 교환하는 방식으로 동작한다.이를 통해 모든 가능한 순열이 동일한 확률로 생성된다. 가장 널리 쓰이는 셔플 알고리즘이다. using System;class Program{ static void Main(string[] args) { int[] array = { 1, 2, 3, 4, 5 }; // Fisher-Yates 알고리즘으로 배열 섞기 FisherYatesShuffle(array); // 결과 출력 .. 2025. 1. 4. Unity) 스테인드 글라스 효과(Stained Glass) 스테인드 글라스 효과(Stained Glass) 색유리를 이어 붙이거나 유리의 색을 칠해서 무늬나 그림을 나타낸 유리 공예로 종교의 건물의 장식같은 곳에서 많이 볼수 있다. 빛이 반사되면 좀더 아름다운 색으로 표현되어서 고딕 양식에서 내/외부에서 많이 사용했다고 한다. 조각을 좀더 세부화 화거나 아웃라인의 컬러를 지정이 가능하게 작업했다. Voronoi Digram을 활용해서 MainTexture의 영역을 나누고 해당 영역의 아웃라인을 추출해서 아웃라인의 컬러를 지정이 가능하도록 했다. 투명한 값을 셋팅하면 여백으로 보이고 아웃라인의 색을 체우면 다음과 같이 나온다.컬러 값은 랜덤하게 셋팅을 했다. 나중에 해당 기능을 사용하고 싶으면 특정 값들을 셋팅하게 하면 될것 같다.MainTexture를 기준으로.. 2025. 1. 2. 문제해결)Xcode) Device ~ is not registered to your team ~. Device must be registred in order to run your code, but you do not have permission to register them. Please check with your team's admin. Device ~ is not registered to your team ~. Device must be registred in order to run your code, but you do not have permission to register them. Please check with your team's admin. Xcode 빌드이후에 디바이스를 연결하는데 다음과 같은 에러가 발생했다.인증서 갱신 과정에서 갱신이 안된듯 하다. Apple Store Connect 사이트 로그인 이후에 인증서를 확인한다. Device를 연결된 MacOS에서도등록된 인증서를 확인한다. 인증서를 다시 추가하거나 갱신하면 디바이스 연결이 정상적으로 된다. Apple Developer - Register a sing.. 2024. 12. 29. Unity) 순차적인 Task 처리하기 위한 유틸 코드 순차적인 Task 처리하기 위한 유틸 코드 작업을 하다보면 async 형태로 작업을 하는 Task 코드를 사용하는 과정에서순차적인 순서에 대한 보장을 하는 코드가 필요할때가 있다. 예를 들어서 선행 처리가 보장되어야하는 항목들로예시를들면 광고를 노출시키는 과정에서 다음과 같은 선행이 필요하다. 광고 SDK 로드 -> 광고 로드 -> 광고 시청 -> 광고 종료다음과 같은 형태의 코드를 보장하기 위해서 여러가지 방법으로 작업이 가능한데 순차적인 Task를 보장하는 코드를 간단하게 만들어 보았다. public class TaskChain : Singleton{ private readonly List> _taskList = new(); private readonly CancellationTokenS.. 2024. 12. 18. 개발환경)GitLab + 슬랙(Slack) 연동하기 GitLab + 슬랙(Slack) 연동하기 Web Hooks 추가 GitLab에서 Commit을 할때마다 알림이 나온다. ★☆☆☆☆ 2024. 12. 16. Unity) Missing Component 체크하기 Missing Component 체크하기작업을 하다보면 예기지 못하게 속성이 Missing으로 링크가 정상적이지 않는 경우가 생긴다.Missing으로 표시가되는건 .meta 가 변경이되어서 읽을수 없는 경우혹은 GUI가 변경이 되는 경우이전에 사용된 Asset이 삭제,혹은 이동이 되어서 연결이 끊어진 경우 다양하다. 'console.warnicon' 아이콘으로 노출var count = Utill.FindMissingReferences(_gameObject);if (count > 0){ Debug.LogWarning($"Missing in Component :: {_gameObject.name} : {count}");}public static int FindMissingReferences(Game.. 2024. 12. 9. Unity Shader) 다이아몬드 형태로 프리즘 효과 처리하기 다이아몬드 형태로 프리즘 효과 처리하기 포켓몬 카드 같은것의 배경같은경우에 다음과 같이 다이아몬드 형태로 타일링되어있는걸 표현해본 쉐이더 코드이다. 다이아몬드 형태의 타일링을 할수 있는 형태로 만들고 해당 타일에 대칭되는 컬러값들을 셋팅하게 했다. 여러가지 효과에 대응되기 위해서 타일 사이즈와 타일의 투명값들을 셋팅하게 했다.Shader"Custom/DiamondTilingShader"{ Properties { _MainTex ("Base Texture", 2D) = "white" { } _HexSize ("Tile Size", Float) = 1.0 _TileAlpha ("Tile Alpha", Range(0, 1)) = 1.0 // Tile tra.. 2024. 12. 8. 이전 1 2 3 4 ··· 59 다음 반응형