Unity/기능구현 7

[Unity] Inspector에서 함수 실행하기

예전에 Ordin Inspector 에셋을 사용했을 때 그 안에 있었던 기능인데 가끔 필요할 때가 있어서 만들어 봤다.  Odin Inspector and Serializer | 유틸리티 도구 | Unity Asset StoreUse the Odin Inspector and Serializer from Sirenix on your next project. Find this utility tool & more on the Unity Asset Store.assetstore.unity.com    아래와 같이 [Button] Attribute를 추가하면 Inspector 창에 버튼 UI가 추가되고, 버튼을 누르면 해당 함수가 실행되는 구조이다.     함수에서만 어트리뷰트를 사용하기 위해 AttributeT..

Unity/기능구현 2024.08.14

[Unity] Prefab의 Missing Script 자동으로 삭제하기

스크립트 파일을 삭제했을 때 해당 스크립트 파일을 사용하고 있는 오브젝트나 프리팹이 있으면 오류가 발생한다.      이런 상황을 방지하기 위해 모든 프리팹을 검사해서 Missing Script를 삭제하는 기능을 만들었다.using System.Collections.Generic;using System.Linq;using UnityEditor;using UnityEngine;public class DeleteMissingScripts : MonoBehaviour{#if UNITY_EDITOR [MenuItem("Custom/Delete Missing Scripts")] public static void DeleteMissingScriptInPrefabs() { string[]..

Unity/기능구현 2024.07.19

[Unity] Table CSV 파일을 ScriptableObject로 변환해보자

1. Excel 파일 만들기 엑셀파일의 규격이 정해져 있어야 작동하기 때문에 규격에 맞는 테이블 데이터를 만드는 작업이 필요하다. 테이블의 구조는 아래와 같다.  1행은 Column의 이름을 나타낸다. (ID, Name, Desc, IconPath) 2행은 데이터의 타입을 나타낸다.   => 2행은 자동화 코드를 만들 때 변수의 타입을 지정해 주기 위해서 사용했다. 3행부터 테이블 데이터를 입력한다.   2. Excel -> CSV 파일 변환 CSV 파일로 바꾸는 방법은 여러가지가 있기 때문에 어떻게든 CSV 파일만 생성하면 된다.  ㆍExcel에서 *.csv 파일로 저장하기   ㆍ웹에서 변환 XLS (EXCEL) CSV 변환 (온라인 무료) — Convertioxls 파일(들) 업로드 컴퓨터, Goog..

Unity/기능구현 2024.04.30

[Unity] 게이지바 구현하기

목표 : 체력, 경험치 UI에 사용할 수 있는 게이지바 구현 #1. UI 구성 Image 오브젝트 생성 (Gauge로 이름 변경) 적당한 크기로 이미지 크기 조절 Image 컴포넌트의 Image Type을 Filled로 변경 (Image Type을 변경하기 위해서는 Source Image가 None 아니어야 한다.) Fill Method, Fill Origin을 변경하여 사용하고자 하는 게이지의 타입을 변경한다. (여기서는 가로로 된 게이지를 만들기 때문에 Fill Method를 Horizontal 타입으로 선택) 게이지의 값을 표시해 줄 Text 컴포넌트도 추가한다. 게이지의 변화를 확인하기 위해 색 변경 & 배경 추가 #2. 기능 구현 Gauge 스크립트를 생성해서 추가한다. Image 컴포넌트의 f..

Unity/기능구현 2024.02.25

[Unity] 모든 하위 오브젝트의 레이어 변경하기

유니티 에디터에서 레이어를 변경하면 아래와 같은 창이 나온다. 첫번째 버튼을 누르면 모든 하위 오브젝트의 레이어가 동시에 변경되고, 두번째 버튼을 누르면 해당 오브젝트의 레이어만 변경된다. 이 기능은 에디터에서 실행되는 기능이기 때문에 게임플레이 도중 실시간으로 적용할 수 없다. 그렇기 때문에 플레이 도중 레이어를 한꺼번에 변경할 수 있게하는 기능을 만들어 봤다. 먼저 오브젝트의 레이어를 변경하려면 아래같이 레이어의 인덱스 번호를 대입해주면 된다. (변경할 레이어(NewLayer)의 인덱스는 8) private void Start() { gameObject.layer = 8; } 또는 레이어의 이름으로 변경하는 방법도 있다. private void Start() { gameObject.layer = La..

Unity/기능구현 2022.04.19

[Unity] Debug Log를 Text 파일의 형태로 저장하기

유니티 에디터에는 로그가 바로 출력되기 때문에 에러 확인이 가능하지만, 빌드했을 때나 안드로이드 기기에서 실행을 했을 때는 에러 로그를 확인하기 어려운 점이 있다. 실시간으로 로그를 화면에 출력해주는 기능을 구현할 수도 있지만, 만드는데 많은 시간이 걸릴 수 있기 때문에 간단하게 Text 파일로 저장하는 기능을 만들었다. Log 메세지가 발생하면 함수가 실행될 수 있도록 Application.logMessageReceived에 추가한다. private void OnEnable() { Application.logMessageReceived += LogToTxt; } private void OnDisable() { Application.logMessageReceived -= LogToTxt; } 원하는 타입..

Unity/기능구현 2022.04.19