unity tools & functions
[유니티] BoxColliders does not support negative scale or size. 해결 Tool
"BoxColliders does not support negative scale or size." Warning은 오브젝트의 스케일과 반대 값인 Collider의 size가 Negative값으로 설정되어있으면 나타나는 경고입니다. 이것은 오브젝트를 좌우반전 등 특정 scale을 음수값으로 설정하였을 때, Collider의 size도 함께 음수로 설정하지 않아 발생합니다. 이것을 쉽게 해결하는 Tool을 제작하여 배포합니다. 💬 서론 📖 구현 내용 Tools에서 Window창을 열고 쉽게 Scene에 있는 문제가 발생할 수 있는 BoxCollider을 찾을 수 있습니다. 해당 오브젝트를 손쉽게 보고, 문제를 해결할 수 있습니다. ✅ 적용 · 스크립트 다운로드 스크립트를 다운로드 받아 프로젝트에 포함시킵니..
.OBJ 파일을 쉽게 수정하는 Tool (MeshWiz 1.0)
OBJ 파일을 읽어 크기, 회전 및 Verticles Quality를 쉽게 조절하고 OBJ 파일의 스크린샷과 GIF를 촬영할 수 있는 기능을 제공하는 MeshWiz를 Unity로 개발하여 공유합니다. 💬 서론 이 기능은 오픈소스를 활용하여 제작하였습니다. 유니티 프로젝트는 깃허브에 업로드 되어있으며, 무료로 사용이 가능합니다. GitHub - Bonnate/MeshWiz: A program that sets the size(scale), rotation, and pivot(to center) of the .obj file. A program that sets the size(scale), rotation, and pivot(to center) of the .obj file. - GitHub - Bonna..
[유니티] Edit 모드에서 물리를 이용해 오브젝트 배치
유니티의 Play Mode에서 활성화되는 유니티 물리 시뮬레이션을 Edit Mode에서 사용하여 리지드바디와 콜라이더를 이용하는 오브젝트들을 물리 시뮬레이션을 이용하여 자연스러운 배치가 가능합니다. Play Mode가 시작될 때 오브젝트가 끼거나 공간이 남아 불필요한 움직임을 미리 계산하여 오브젝트들의 안정적인 배치가 가능합니다. GitHub - Bonnate/Unity-Non-Playmode-Physics-Simulator: a unity tool designed to focus on the Simulation feature in edit mode a unity tool designed to focus on the Simulation feature in edit mode - GitHub - Bonnat..
[유니티] WAV. 파일의 decibel 조절 tool
효과음의 평균 db이 서로 달라 별도의 프로그램으로 조절해야하는 불편함이 있어 이 문제를 해결하기 위해 unity editor에서 wav 파일의 db을 손쉽게 조절할 수 있는 tool을 만들어 배포합니다. 📺 미리 보기 💬 서론 이 기능은 Github에 업로드 되어있습니다. Unity Editor 2021.3.5f1 및 2022.3.7f1에서 테스트 되었습니다. GitHub - Bonnate/Unity-WAV-Easy-Volume-Editor: Unity Editor extension designed for developers working with WAV files. Unity Editor extension designed for developers working with WAV files. - Git..
[유니티] 에셋의 이름을 편리하게 변경
유니티에서 Assets의 이름을 직관적이고 규칙적으로 관리하는것은 매우 중요합니다. 연속적인 같은 이름을 가지는 에셋들의 이름을 편리하게 지어주는 Tool을 구현하였습니다. 📺 미리 보기 📖 구현 내용 Project 폴더 내 에셋들의 이름을 변경할 수 있습니다. 하이어라키에 내 오브젝트들의 이름을 변경할 수 있습니다. 시작 인덱스 값을 지정하여 이 값부터 시작할 수 있습니다. (예시, 12부터 새롭게 넘버링) 하이어라키 오브젝트의 이름을 변경한 건에 대하여 undo가 가능합니다. ⚒️ 구현 Editor Tool로 구현하였습니다. · 구현 내용 #if UNITY_EDITOR using UnityEditor; using UnityEngine; public class EasyRenameWindow : Edit..
[유니티] 중복 Enum ID 업데이트 툴
열거형(enum)을 사용할 때 기획 의도에 따라 이미 선언된 enum id에서 중간에 번호가 삽입되어 중복되는 enum 번호가 생길 수 있습니다. 이런 경우 자동으로 enum ID를 중복되지 않게 갱신해 주는 툴을 사용할 수 있습니다. 📺 미리 보기 enum MsgId { .... // 생성된 GenerateTransformSync를 파괴 C_DESTROY_GENERATE_TRANSFORM_SYNC = 14; S_DESTROY_GENERATE_TRANSFORM_SYNC = 14; C_TRANSFORM_SYNC = 15; S_TRANSFORM_SYNC = 16; C_MOVE_RIGIDBODY_TRANSFORM_SYNC = 17; C_REQUEST_RIGIDBODY_SYNC_TEST_1 = 17; C_REQ..
[유니티] 엑셀(excel) 파일 읽기, json으로 변환하여 사용
엑셀은 데이터를 직관적이고 편리하게 관리할 수 있게 해줍니다. 이러한 장점을 이용하여 유니티에서 엑셀 파일을 json으로 변환하여 엑셀 파일의 데이터를 이용할 수 있도록 함수를 구현하여 정리하였습니다. 📺 미리 보기 엑셀 파일을 읽어 그 데이터를 이용할 수 있습니다. 💬 서론 이 기능은 ExcelDataReader, ExcelDataReader.DataSet, Newtonsoft.Json 패키지를 사용합니다. 📖 구현 내용 using UnityEngine; using System.Collections.Generic; using System.IO; using System.Data; // Newtonsoft.Json과 ExcelDataReader 패키지가 필요합니다. // nuget에서 다운로드 받아 사용하..
[유니티] 유니티 에디터 스크린샷 캡쳐 도구
유니티 에디터에서 Scene의 화면을 빠르게 캡쳐할 수 있는 유니티 윈도우 에디터를 구현하여 배포합니다. 📺 미리 보기 GitHub - Bonnate/Unity-Editor-Screenshot-Capture: Unity Editor Window for capturing screenshots Unity Editor Window for capturing screenshots. Contribute to Bonnate/Unity-Editor-Screenshot-Capture development by creating an account on GitHub. github.com 💬 기능 미리 정의된 해상도 중에서 선택하거나 사용자 지정 해상도를 설정합니다. 선택한 해상도에 따라 종횡비를 자동으로 계산합니다. 캡쳐된..
[유니티] Hex를 RGB Color로 변환
색상을 표현하기 위해 HEX(#000000)를 사용할 수 있습니다. 유니티에서 HEX를 RGB Color로 변환하여 사용할 수 있도록 스크립트를 작성하였습니다. 💬 서론 · 기본 함수 Color color; ColorUtility.TryParseHtmlString("#60594F", out color); mActiveOptionLabels[i].color = color; 유니티의 기본 기능 중 Hex를 Color로 변환하는 코드가 이미 있습니다. 하지만, 함수 매개변수가 ref out을 사용하기때문에 Color을 미리 선언하고, 참조해야하기에 불필요한 코드가 늘어납니다. · 구현한 함수 mActiveOptionLabels[i].color = Utility.HexToColor("60595F"); 구현한 함..
[유니티] InputField Tab Navigation, Button Event
키보드 탭 내비게이션은 키보드 사용자가 UI 요소를 효율적으로 탐색하고 상호작용할 수 있도록 도와주는 접근성 기능입니다. 이 기능을 구현하고, 쉽게 설정할 수 있는 도구를 함께 제작하여 정리하였습니다. 📺 미리 보기 HTML 삽입 미리보기할 수 없는 소스 📖 구현 내용 Tab을 누르면 다음 입력필드로, Shift + Tab을 누르면 이전 입력필드로 이동합니다. 특정한 입력필드(마지막 입력필드)에서 설정한 키를 누르면 버튼 이벤트를 호출합니다. 입력필드 설정을 쉽고 간편하게 하기위해 자동으로 설정해주는 에디터 Tool을 구현하였습니다. ⚒️ 구현 에디터 기능과 런타임 도중 실행될 두개의 스크립트가 있습니다. · UiTabNavi 런타임도중 실행되어 키보드의 입력을 확인하여 탭 내비게이션을 수행합니다. us..
[유니티] 오브젝트 위치 자동 정렬
에디터에서 개발자는 효율적인 게임 레벨 디자인과 시각적 일관성을 위해 오브젝트 위치를 편리하게 정렬해야할 필요가 있습니다. 이번 글에서는 특정 오브젝트를 기준으로 동일한 간격으로 편하게 정렬하는 기능을 구현하고 이를 정리하였습니다. 📺 미리보기 HTML 삽입 미리보기할 수 없는 소스 💬 서론 이 기능은 유니티 에디터 기능으로 빌드 후 런타임 도중 실행되는 기능은 아닙니다. ⚒️ 구현 해당 스크립트를 그대로 복사하여 프로젝트에 추가하면 바로 사용이 가능합니다. · Script using UnityEditor; using UnityEngine; public class ObjectAlignWindowViaVector : EditorWindow { private GameObject baseObject; priv..
[유니티] 파일 암호화 (json 암호화)
게임 세이브 파일을 암호화하면 게임 진행 상황을 보호하고 부정 행위를 방지할 수 있습니다. AES를 이용하여 파일을 암호화하고 읽는 방법을 정리하였습니다. 📺 미리보기 · 암호화 이전 · 암호화 이후 📖 구현 내용 string 문자열을 쉽게 암호화하고, 복호화 할 수 있습니다. AES를 사용하기위한 키와 이니셜벡터를 스크립트에 하드코딩 하지 않습니다. 전역 함수를 사용하여 컴포넌트를 찾거나 레퍼런스 하지 않고 직접 호출하여 편리하게 사용 가능합니다. ⚒️ 구현 · AES.cs using System.Security.Cryptography; using System.Text; using UnityEngine; /// /// AES 암호화 및 복호화 /// public static class AES { // ..
[유니티] UI 창 드래그
게임 내부의 UI 드래그 기능은 사용자 정의 가능한 환경을 제공하며, 더 나은 사용자 경험을 제공합니다. 이는 게임 플레이에 대한 제어와 편의성을 향상시킵니다. 또한 사용자 맞춤 설정을 지원하며, 개인적인 기호에 따라 UI를 최적화할 수 있습니다. 📺 미리보기 HTML 삽입 미리보기할 수 없는 소스 📖 구현 내용 게임 내에 지정한 UI 창을 드래그하여 원하는 위치로 UI 창을 옮길 수 있습니다. 선택한 창을 상단으로 위치하게하여 다른창에 가려지지 않게 합니다. UI 창이 화면 영역을 완전히 벗어나지 않습니다. 언제든 다시 원하는 위치로 복구시킬 수 있습니다. 위치값이 유지되어 게임 중 다시 UI 창을 열었을 때 그 위치가 유지되어 나타납니다. ⚒️ 구현 매우 간단한 스크립트 작성으로 기능을 구현합니다. ..