본문 바로가기
반응형

개발/Unity354

Unity) 순차적인 Task 처리하기 위한 유틸 코드 순차적인 Task 처리하기 위한 유틸 코드 작업을 하다보면 async 형태로 작업을 하는 Task 코드를 사용하는 과정에서순차적인 순서에 대한 보장을 하는 코드가 필요할때가 있다. 예를 들어서 선행 처리가 보장되어야하는 항목들로예시를들면 광고를 노출시키는 과정에서 다음과 같은 선행이 필요하다. 광고 SDK 로드 -> 광고 로드 -> 광고 시청 -> 광고 종료다음과 같은 형태의 코드를 보장하기 위해서 여러가지 방법으로 작업이 가능한데 순차적인 Task를 보장하는 코드를 간단하게 만들어 보았다.  using System;using System.Collections.Generic;using System.Threading;using System.Threading.Tasks;using UnityEngine;pub.. 2024. 12. 18.
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)UI Toolkit Debugger UI Toolkit Debugger UI 툴킷 디버거는 UI 요소를 실시간으로 검사하고 디버깅하는 데 사용할 수 있는 툴입니다.UI 계층 구조를 시각적으로 표현합니다.이를 사용하여 각 UI 요소의 상태와 프로퍼티를 검사할 수 있습니다. Window의 마우스 오른쪽 메뉴로 UI Toolkit Debugger를 선택한다.    해당 Window의 UI 구성과Layout 의 margin / border 혹은 Focusable 등 여러가지 UI의 요소를 확인이 가능하다. Unity Edior 에서 Window를 구성하거나 Profiler 하는 과정에서 유용하다.Window의 Size,Name, Focusable등  여러가지 속성들이 확인이 가능하다. Unity UI 툴킷 디버거 : [링크] UI 툴킷 디버거 -.. 2024. 11. 11.
Unity) 홀로그램 효과 쉐이더 홀로그램 효과 쉐이더 내용  Shader "Custom/HolographyShader"{ Properties { _MainTex ("Main Texture", 2D) = "white" {} // 기본 텍스처 _NoiseTex ("Crack Pattern Texture", 2D) = "white" {} // 크랙 패턴 노이즈 텍스처 _Color ("Base Color", Color) = (1, 1, 1, 1) // 기본 색상 _MousePos ("Mouse Position", Vector) = (0, 0, 0, 0) // 마우스 위치 _NoiseScale ("Noise Scale", Float) = 10.0 // 크랙 패턴 스케일 .. 2024. 11. 8.
문제해결) 패키지 Error when executing git command. git: 'credential-winstore' is not a git command. See 'git --help'. fatal: could not read Username for 'https://gitlab.com': terminal prompts disabled Error when executing git command. git: 'credential-winstore' is not a git command. See 'git --help'.    fatal: could not read Username for 'https://gitlab.com': terminal prompts disabled Unity Package를 가져오는 과정에서 갑자기 'terminal prompts disabled' 오류와 함께 받아지지 못하는 현상이 생겼다.나는 GitLab에서 2FA 형태로 로그인을 하고 있었는데 기존에는 잘 되다가 갑자기 이번에 되지 않았다.인증 방식이 여러가지가 있는데 Https 방식과 SSH 형식을 자동으로 변환해주는 명령어로 해결했다.Git Bash에 해당 명령.. 2024. 11. 6.
문제해결)The reference script on the Behaviour(Game Object '')is missing! The reference script on the Behaviour(Game Object '')is missing! Unity 에서 갑자기 GameObject의 missing 이라는 워닝이 발생하기 시작했다.해당 Component는 정상적인데 이상하게 해당 경고가 계속 발생한다.여러가지 Unity Project의 상황에 따라 여러가지 방법들을 해봐야 한다. 문제가 되는 스크립트 파일을 삭제, 이름 변경, 이동으로 인한 .meta 파일의 손상스크립트 컴파일 에러,git branch 이동으로 이한 meta 파일의 비정상적인 import 문제가되는 Script를 Reimport 하면 해결이 된다. Unity Project도 특정 순간에 Project Asset 을 읽어오는 형식으로 내부에서 캐시로 데이터를 관.. 2024. 11. 6.
Unity) ScripableObject 으로 사운드 관리 하기 (Editor Play) ScripableObject 으로 사운드 관리 하기 (Editor Play)  Unity 에서 사운드 파일을 관리하는 ScriptableObject이다.Inspector도  Custom 해서 Preview Play와 해당 사운드의 진폭도 한눈에 볼수 있도록 했다.사운드 파일은 따로 파편화 되어있으면 관리가 불편하기도 하고 관리가 안되기 때문에 하나로 관리하는게 편리하다. using UnityEngine;using UnityEditor;[CustomEditor(typeof(AudioData))]public class AudioDataEditor : Editor{ private AudioSource previewSource; public override void OnInspectorGUI() .. 2024. 10. 28.
Unity) Shader로 Grid 표시하기 Shader로 Grid 표시하기  Grid 형태를 보여주는 Shader 코드이다.3D 공간감을 표현하기 위해서  여러가지 기준이 되는 선을 추가적으로 표현해주는 Grid를 Shader 코드이다.   여러가지 수치적으로 Grid를 표현이 가능하데 Line Color가 굉장히 많이 선택이 가능하게 되어있다.3D 공간감을 표현하기 위해서는 X, Y, Z 축을 기준으로 라인을 그려줘야한다. 공간감을 표현해주면 3D 연출, 캐릭터 모션 등 여러가지 깊이감을 표현할때 배경으로 사용하기도 한다.  원본 링크 : [링크] The Best Darn Grid Shader (Yet)For as long as I’ve been writing shaders, there’s been one specific shader I’ve .. 2024. 10. 28.
Unity) 오프스크린 인디케이터(off-screen indicator) 오프스크린 인디케이터(off-screen indicator) 스크린의 화면 밖에 위치하게되면 해당 화살표(방향) 오브젝트를 보이게 하는 코드이다.게임을 플레이하다보면 넓은 맵에서 위치를 알수 없는 경우가 종종 생긴다.그런 상황에서 너무 상세한 정보를 주는것보다는 방향이나 거리의 정보를 노출해주는 것이다.  using System.Collections;using System.Collections.Generic;using System.Linq;using UnityEngine;using UnityEngine.UI;public class ScreenOffIndicator : MonoBehaviour{ public GameObject indicatorPrefab; // 인디케이터 프리팹 public Ga.. 2024. 10. 24.
Unity) Project Settings의 특정 메뉴 선택하기 Project Settings의 특정 메뉴 선택하기  Unity 툴을 만들다보면 특정 설정에 대한 값들을 셋팅하는 셋팅값이 없는 경우에 대해서 처리할 때가 있다.Project Setting에 Provider로 커스텀하게 셋팅해서 작업했을때 해당 Setting 메뉴까지 이동하기에는 꽤나 번거롭다. 특정 상황에서 경고 팝업 이후에 확인버튼으로  Project/Player 메뉴 선택하기if(EditorUtility.DisplayDialog("경고", $"{_conent}", "확인")){ SettingsService.OpenProjectSettings("Project/Player");} Unity Project Setting : [링크] Project Settings. Project Settings wi.. 2024. 10. 22.
Unity)보로노이 다이어그램 (Voronoi diagram) 보로노이 다이어그램 (Voronoi diagram) 보로노이 다이어그램은 주어진 평면 위의 점 집합에서, 각 점에 대해 해당 점과 가장 가까운 영역을 나누는 공간 분할 방법으로 여러가지 과학적 및 공학적 분야에서 자주 사용된다. 특정 전체를 기준으로 분할되기 때문에 어느정도의 일정구역을 차지하게 된다.  Map Size 에서 Point Count 만큼 영역을 생성하는 로직이다.    using System.Collections.Generic;using UnityEngine;public class VoronoiDiagram : MonoBehaviour{ public int pointCount = 10; public Vector2 mapSize = new Vector2(10, 10); private List.. 2024. 10. 19.
Unity) 재화 획득 연출(흩뿌리고 타겟 이동 연출) 재화 획득 연출(흩뿌리고 타겟 이동 연출) 보상으로 재화를 획득하는 과정에서 시각적인 연출 효과로 인해서 보상을 받는 느낌을 더 주기 위해서특정위치에서 타겟으로 이동하는 연출을 작업했다.구조는 내부에서 Object Pool 을 사용해서 보상에 처리할 적당한 수준의 보상 오브젝트를 초기화해서 만든다.보상 오브젝트의 재사용성과 보상의 개수에 따라 유동적으로 변화를 해야하는 것에 대해 고려하고 작업진행 했다.   Diameter 값을 통해서 처음에 보상오브젝트를 1차적으로 흩뿌려주는 과정이 끝나면타겟으로 이동한다.  타켓 오브젝트의 Script 로 Animation Curve를 활용해서 시간의 흐름에 대해서 처리를 진행했다. using System;using System.Threading.Tasks;using.. 2024. 10. 18.
Unity) Debug -Json Pretty Print 적용하기 Debug -Json Pretty Print 적용하기작업을 하다보면 Json Parsing 의 값을 Unity Console에 노출하는 경우가 종종 있는데일반적으로 노출을 하게되면 Json 의 형식이 한눈에 보이지 않는다.   Json을 파싱하는 곳들을 보면 다음과 같이 'Pretty Print 적용' 같은 체크박스를 하면 형식이 이쁘게 나오는 것을 참고해서 Debug Class를 커스텀해보자. using UnityEngine;public class DebugTest : MonoBehaviour{ string json = "[\r\n {\r\n \"postId\": 1,\r\n \"id\": 1,\r\n \"name\": \"id labore ex et quam laborum\",\r\.. 2024. 10. 10.
Unity)격투 게임 HP 구현하기 (Recoverable HP :회복 가능 HP) 격투 게임 HP 구현하기 (Recoverable HP :회복 가능 HP)  격투게임이나 특정 순간의 강력한 데미지를 표현해줄때 2중으로 HP를 표현해줌으로써 매번 체력 게이지를 보는게 아니기 때문에 얼만큼 차감이 되는지에 대해새 임펙트가 있는 형태의 HP이다.   using System.Collections;using UnityEngine;using UnityEngine.UI;public class HPBar : MonoBehaviour{ [SerializeField] private Image foregroundImage; // 즉시 감소하는 이미지 [SerializeField] private Image backgroundImage; // 서서히 감소하는 이미지 public f.. 2024. 10. 8.
Unity) GameObject Active Script로만 제어하기 GameObject Active Script로만 제어하기Prefab 작업을 하다가 보면 Active를 끄는 이슈가 생기는 경우가 종종 존재한다.그런 케이스가 발생하지 않도록 GameObject를 컨트롤을 Script로만 가능하게 만드는 Script를 생성해서꺼지면 안되는 GameObject에 해당 Script를 추가하면 된다. 테스트는 간단하게 GameObject의 Active를 껏다 켰다 가능한지.Script 코드로는 해당 GameObject를 컨트롤 가능한지 판단해서 작업했다.    using UnityEngine;public class GameObjectScriptActive : MonoBehaviour{ // Inspector에서 활성화 상태 제어를 선택할 수 있는 변수 [SerializeFiel.. 2024. 9. 30.
반응형