전체 글 229

조이스틱과 캐릭터 이동

모바일에서의 캐릭터 이동은 대부분 가상 조이스틱으로 처리된다. 조작에 따라 조이스틱이 고정이 될 수도 있고, 터치하는 위치에 생성되는 가변형일 수도 있다. 기본적인 캐릭터 이동을 구현해 보자. 조이스틱은 다음과 같은 기능을 포함한다.레이캐스트 구역의 터치를 받아 활성화조이스틱과 캐릭터 이동 연동기울기에 따른 속도 변화 1. 조이스틱 조작using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class VirtualJoystick : MonoBehaviour, IPointerDownHandler..

Unity 2026.08.28

안드로이드 빌드 세팅하기(SDK, NDK, JDK)

안드로이드 빌드를 위해서는 SDK, JDK, NDK가 모두 필요하다. 유니티 허브를 통해 프로젝트를 설치하면 안드로이드 키트도 같이 설치되지만, 다운로드 아카이브에서 설치하면 수동으로 설치해야 하는 경우가 많다.Preferences - External Tools로 가면 어떤 요소가 없는지 확인할 수 있다. 지금은 JDK, SDK, NDK가 모두 없다. 유니티 공식 문서(2022.3 기준)에서는 다음과 같은 버전을 추천한다. 알맞은 버전을 설치해 보자. 우선 Android Studio를 설치한다. More Actions의 SDK Manager 메뉴를 클릭한다. Show Package Details를 눌러 SDK, NDK의 원하는 세부 버전을 설치하면 된다.설치 중 다음과 같은 문구가 뜬다면 Command-..

Unity 2026.08.26

[Addressable] UVC 사용 시 최대한 충돌을 막는 설정

여러 명이 하나의 어드레서블을 수정하려고 하면 오류가 뜬다. 물론 플레이에 지장은 없지만, 오류는 없을수록 좋다. 쾌적한 어드레서블 설정 환경을 만들어 보자.1. Addressables Groups - Play Mode Script 확인개발 컴퓨터 각자의 로컬 빌드 파일을 사용하도록 한다. 에셋 번들을 빌드하지 않고 유니티 프로젝트 내 원본 에셋을 그대로 읽어오므로 속도도 빠르다. 2. Addressables Profiles 확인현재는 웹 서버를 사용하지 않고 UVC를 통해 관리하므로 BuildTarget은 따로 건드리지 않아도 된다. Remote 경로는 원래 privateIP 주소를 참고하고 있다. IP 주소의 충돌도 최대한 방지한다. 3. Addressable Group 개별 설정그룹의 Build..

Unity 2026.08.26

[모작] 눈 3개 캐릭터의 고글

잘생긴 사람을 보면 공부 효율이 오른다는데... 잘생긴 캐릭터를 보면서 3D를 공부할 시간이 온 것 같다. 한번 고글을 만들어 보자. ⓒHYPERGRYPHⓒARKNIGHTS 0. 기본 준비고글의 기본 뼈대이다. 하나의 큐브를 만들고 복사하기 보다는, 큐브 메쉬를 Mirror랑 Extrude로 복제하여 열심히 위치를 맞췄다. 1. Solidify로 두께감 만들기고글을 보면 렌즈를 제외하고는 이렇게 뚜껑이 열린 박스 모형이어야 한다. 이 작업은 Solidify로 많이 진행한다고 한다. 큐브의 윗면이 없어야 이미지와 같은 두께감을 만들 수 있다. 아마 렌즈는 작업 후반에 면을 추가하는 방식으로 구현하는 것 같다. 2. Bevel로 팔각형 만들기고글 모델을 보면 윗면만 팔각형이 되고, 아랫면은 그대로 박스 모..

Blender 2026.07.29

Solidify가 이상해요

원래 모델은 이렇게 생겼는데, solidify를 적용하니 오른쪽 큐브가 혼자 이상한 방향으로 팽창한다. Solidify는 면이 바라보는 방향을 기준으로 입체 두께를 생성한다. 그러니 방향이 이상하다는 건 면이 뒤틀렸다는 소리이다.우선은 Ctrl+A로 Scale을 통일한 다음, A키로 전체 선택을 하고, shift+N으로 노말을 다시 계산한다. 다시 면을 바깥으로 꺼내주고,solidify를 사용하면 제대로 팽창한다.

Blender 2026.07.29

비동기 함수를 이용한 생산 시스템

육성 및 타이쿤 장르에서 사용되는 재화 생산 시스템을 구현해보았다. 재화 생산에서 가장 중요한 것은 씬이 넘어가도 생산 코드가 그대로 작동하는 것이다. 이를 UniTask의 비동기로 구현하며, 추가로 해당 스크립트가 포함된 오브젝트는 씬이 additive인 상태에서 활성화되어 있어야 한다(스크립트가 활성화를 유지해야 한다). using Cysharp.Threading.Tasks;using UnityEngine;using System.Threading;using System;public class ProduceCommodities : MonoBehaviour{ private PlaceInformation placeInfo; [SerializeField] private int count = 0; ..

시스템 구현 2026.07.18

씬 전환하기

씬 전환 자체는 어렵지 않다. 하지만, 씬이 어느 타이밍에 전환되어야 할지, 씬이 전환됨에 따라 어떤 작업을 해야할지 등 부가적인 요소를 많이 고려해야 한다. 이번에는 씬이 이동해도 특정 기능이 계속 유지되어야 하는 생산 시스템이 존재한다. 즉, 액티브 씬이 바뀌어도 작업을 계속 실행하는 오브젝트가 활성화되어 있어야 한다는 것이다. 생산 씬에서 다른 씬으로 이동할 때, 생산 씬은 additive 모드로 백그라운드에 존재해야 한다. 반대로 다른 씬에서 생산 씬으로 이동하면 원래 있던 씬은 언로드하고, 백그라운드에 있던 생산 씬을 active로 등록해야 한다. using System.Collections;using System.Collections.Generic;using UnityEngine;using U..

Unity 2026.07.16

BootStrap으로 데이터 관리하기

게임 구조를 설계하다 보면 게임의 기능마다 매니저가 있을 것이다. 씬을 자주 옮길수록 매니저도 같이 이동해야 하는데, DontDestroy에 등록하여 사용하기에는 무언가 정돈되지 않은 느낌이 든다. 또한, 데이터베이스나 게임 실행 사전에 로딩을 끝내야 하는 경우라면 더 복잡해진다. 그래서 BootStrap 패턴을 이용하여 게임의 필수 요소를 한 곳에 관리한다. 부트스트랩의 핵심은 진입점을 하나로 통일하는 것이다. 앞서 언급했듯, 데이터베이스 및 매니저를 게임 씬에 진입하기 전에 초기화하므로 Null Reference 오류를 방지할 수 있다. 또한 에디터 테스트 시 별도의 환경을 세팅할 필요 없이 게임 데이터가 먼저 로드되므로 원활한 디버깅 작업이 가능하다. 부트스트랩 씬에는 카메라나 Light가 필요..

Unity 2026.07.16

CSV를 이용하여 데이터 옮기기

씬을 넘어갈 때 Additive로 활성화하거나 DontDestroy를 사용하지 않는 이상 오브젝트 데이터가 유지되지 않는다. 그렇다고 DontDestroy를 남용할 수도 없다. 데이터를 오브젝트 스크립트가 아닌 에셋으로 저장하여 관리해 보자. 우선, CSV를 사용하기 위해서는 파일 변환을 사용해야 하므로 using System.IO; 를 선언한다. String Builder를 사용한다면 추가로 using System.Text;도 적어주어야 한다.using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;using System.Text;public class DominionInventory : Mono..

Unity 2026.07.16