물리적인 이동을 구현할 때, 이동 속도를 프레임 시간과 곱해 이동 거리를 계산하는 것은 일반적인 방법입니다. 하지만 동일한 수식을 작성할 때, 연산 순서에 따라 성능에 차이가 발생할 수 있다는 사실을 알고 계셨나요?코드 예시를 통해 차이를 설명하고, 최적화하는 방법을 알아보겠습니다.연산 순서 이해하기rigidbody.MovePosition(rigidbody.position + moveDir * Speed * Time.fixedDeltaTime);rigidbody.MovePosition(rigidbody.position + moveDir * (Speed * Time.fixedDeltaTime)); 이때 moveDir는 벡터(Vector)이며 Speed는 스칼라(Scala) 값입니다. 첫 번째 줄의 코드는..
유니티 Odin InspectorOdin Inspector란? 오딘 인스펙터는 커스텀 에디터 코드를 한 줄도 작성하지 않고도 강력하고 사용자 친화적인 커스터마이징 에디터의 모든 워크플로 이점을 누릴 수 있는 Unity용 플러그인입니다.wlsdn629.tistory.comShowIf 어트리뷰트는 오딘 인스펙터에 있는 기능이긴 합니다.ShowIf 어트리뷰트를 사용하면 특정 컴포넌트의 조건에 따라 특정 필드를 보이게 할지 말 지를 컨트롤 할 수 있습니다. 저는 ShowIf 어트리뷰트를 응용해서 ShowIfComponent 어트리뷰트를 만들어보았습니다.ShowIfComponent 어트리뷰트를 사용하면 특정 컴포넌트를 가지고 있을 때에만 해당 필드가 보여지게 할 수 있습니다.ShowIfComponent Attri..
이번 10분 콘테스트 출품작인 '러너스'입니다 !그 누구도 깰 수 없는 극강의 어른용 타자게임 .. 한 번씩 플레이 해보시고 솔직한 리뷰 남겨주시면 감사드리겠습니다! 만들래 - 인디게임 팀빌딩, 게임 개발팀 만들기인디 게임 개발의 시작 - 인디게임 팀빌딩, 게임 개발팀 만들기mandlemandle.com
자주 사용하는 함수- DoRestart : 트윈을 처음부터 다시 시작- DoRewind : 트윈을 거꾸로 재생하여 처음 상태로 되돌림두 개의 함수를 이용해서 주로 UI 애니메이션 만들곤 함. 함수 이름 설명 DOComplete()트윈을 즉시 완료 상태로 만듭니다. 트윈이 바로 끝나고 완료 콜백이 호출됩니다.DOKill()트윈을 즉시 중지하고, 관련된 모든 리소스를 해제합니다.DOKillById(string id)지정된 ID를 가진 트윈만 중지하고, 관련된 리소스를 해제합니다.DOPause()트윈을 일시 중지합니다.DOPauseAllById(string id)지정된 ID를 가진 모든 트윈을 일시 중지합니다.DOPlay()트윈을 재생합니다.DOPlayById(string id)지정된 ID를 가진 트윈만..
라이팅 세팅에 가시면 Environment Lighting이라는 부분에 존재합니다.여기에서 Intensity Multiplier를 조절하시면 됩니다.
Global Param을 사용하는 이유 Global Param을 사용하지 않고 다국어를 번역하게 될 경우 글씨 위치가 맞지 않아 불편함을 겪게 됩니다. 예를 들면 아래와 같습니다. [한국어의 경우] 발견된 이상 개수 : 7[영어의 경우 ] Total Number Of Anomalies : 7 위와 같이 글씨 위치가 맞지 않게 되는 문제가 있었습니다. 그래서 7의 경우 발견된 이상 현상의 개수이므로 해당 Value를 Param으로 지정해주었습니다. Param을 컨트롤 하는 방법은 Local과 Global이 있습니다.Local로 Param 컨트롤하기Local의 경우 위와 같이 미리 컴포넌트를 이용해서 특정 Param을 컨트롤 할 수 있습니다. Global로 P..
22년도에 Pool System에 대해서 언급한적이 있습니다. Pooling에 관한 내용은 아래 포스팅에 작성했으니 참고하시면 되겠습니다. 이때 소개한 Pool의 경우 하나의 오브젝트에 대해서만 관리할 수 있다는 단점이 있었습니다. Unity Pooling System (최적화 구웃!)Pooling이란? Unity의 풀링 시스템은 런타임 중에 게임 오브젝트를 효율적으로 관리하고 재사용하는 데 사용되는 기술로, 특히 총알, 적, 파티클과 같은 오브젝트를 자주 생성하고 소멸해야 할 때wlsdn629.tistory.com 이번 시간에는 Dictionary를 활용해서 하나의 오브젝트에 대해서만 관리하는 것이 아닌 2개 이상의 오브젝트를 관리할 수 있는 방법과 활용 방법에 대해 알아보겠습니다. 제목에서도 알 수 ..
Sample Name Host Mode SharedMode Description Study Focus Asteroids SimpleYesNo간단한 아케이드 스타일의 게임 샘플. 네트워킹과 동기화의 기본을 배우기 적합.기본적인 네트워킹 개념, 동기화, 및 객체 이동 동기화를 학습하는 데 적합.Simple FPSYesNo기본적인 1인칭 슈팅 게임 샘플. FPS 게임에서의 네트워크 동기화와 레이턴시 처리 예시.FPS 장르의 캐릭터 컨트롤, 발사체 및 상호작용의 네트워크 처리 학습에 유용.Razor MadnessYesNo레이싱 게임 스타일의 샘플. 차량 물리와 동기화 메커니즘 학습.차량 물리 및 동기화 알고리즘, 레이싱 게임의 네트워크 처리 학습에 적합.Quiz NetworkYesYes간단한 퀴즈 게임 ..
현재 개발중인 프로젝트는 Fusion2을 이용한 게임을 제작하고 있습니다.Effect와 같이 자주 사용되는 오브젝트를 Pooling을 이용해서 관리하고자 했습니다. 처음에는 Effect같은 객체는 반드시 NetworkObject로 관리해야 하는 줄 알았으나, On/Off 시점만 동기화가 되면 된다는 것을 깨달았습니다. 그래서 Pool자체는 NGO을 관리하는 것이 아닌 Unity GameObject을 관리하도록 만들었습니다. Pool System은 크게 Init, Add, Get, Return 이렇게 나뉜다고 생각합니다. RPC을 이용할 때 Init과 Add, Return은 문제가 없었으나 Get이 문제였습니다.왜냐하면 Init과 Add, Return은 void함수였지만 Get은 return Type이 존..
SensorToolkit 2이란? Sensor Toolkit2는 Raycasts, Overlaps 등의 기능을 활용하여 2D와 3D 환경에서 다양한 감지(Detection) 동작을 쉽게 구현할 수 있게 도와주는 에셋입니다.센서(Sensor) 컴포넌트를 통해 복잡한 감지 및 AI 행동을 구현할 수 있으며, 성능 최적화가 잘 되어 있다는 것이 특징입니다. 다양한 필터링 옵션과 편집기 내 테스트 기능을 존재하여 빠르게 디버깅 및 테스트 할 수 있어 효율적으로 개발을 할 수 있습니다.센서와 신호란?Sensor Toolkit2에는 핵심 단어가 존재합니다. '센서', '신호'. 두 핵심 단어에 대해서 알아보겠습니다. 센서란?특정 조건에 따라 객체를 감지할 수 있게 도와주는 컴포넌트 입니다. 센서에는 아래와 같은 종..
안녕하세요, 학교 팀프로젝트로 시작했던 프로젝트를 진짜 피눈물 흘리며 꾸역꾸역 개발하고 최적화해서 Meta와 Steam까지 출시해버렸습니다.. Steam은 8월2일에 올라오고 Meta는 이미 출시가 된 상태입니다. 이 게임이 저의 모든 정수가 담겨 있다 말하긴 그렇지만, 그래도 짧은 기간동안 가격대비 괜찮은 게임을 제작해봤으니 한 번씩 플레이해보고 후기를 남겨주시면 너무 감사하겠습니다. Meta Quest의 Dark Prison 7th | Quest VR 게임 www.meta.com Dark Prison 7th on SteamYou are trapped alone in a mysterious prison. After carefully examining your surroundings, you ..
APK 설치 위치는 auto(android:installLocation in AndroidManifest.xml)여야 합니다.APK 화면 방향이 가로가 아닙니다(AndroidManifest.xml의 android:screenOrientation).빌드를 하는데 자꾸 위와 같은 에러가 계속 발생해서 거의 며칠간 끙끙 앓았네요.... APK 설치 위치는 auto(android:installLocation in AndroidManifest.xml)여야 합니다. 해결하기 모바일 - Ohter Settings 탭에 Install Location을 Automatic으로 해줍니다. APK 화면 방향이 가로가 아닙니다(AndroidManifest.xml의 android:screenOrientation). 해결하기 R..
프로젝트를 진행하다보니 특정 에셋을 자주 찾아보게 되었습니다. 북마크를 이용해서 즐겨찾기 하는 방식으로 할 수 있지만 이번 시간에는 에디터 기능을 이용해서 상단 버튼을 누르면 해당 에셋에 접근할 수 있는 방법에 대해 알아보고자 합니다. Selection.activeObject 활용하기Selection.activeObject는 에디터 내에서(현재 찾고자 하는) 선택된 오브젝트를 나타냅니다. Selection.activeObject를 사용하는 방법은 매우 간단합니다. 먼저 UnityEditor 네임스페이스를 사용해야 하며, 그 다음 특정 오브젝트를 선택하려면 Selection.activeObject에 해당 오브젝트를 할당하면 됩니다.using UnityEditor;using UnityEngine;publi..
Fusion2란?Fusion2는 Photon의 차세대 네트워크 엔진으로, 서버 모드, 호스트 모드, 공유 모드 등 다양한 네트워크 토폴로지를 지원합니다. 모드 특징 사용 사례 서버 모드전용 서버, 공용 IP, 높은 안정성, 보안성대규모 멀티플레이어 온라인 게임호스트 모드호스트 플레이어, 간편한 설정소규모 협동 게임공유 모드클라우드 룸, StateAuthority다양한 디바이스와 네트워크 환경 지원 Fusion2의 주요 기능으로는 네트워크 객체 동기화, 입력 동기화, 네트워크 이벤트 처리, 유연한 Room 관리 등이 있습니다. Fusion2 시작하기 Fusion 2 1 - 시작하기 | Photon EngineFusion 공유 모드 기초는 Fusion 프로젝트를 시작하는 데 필요한 초기 단계를 설명합니..
슬로건: XREAL 6기 해커톤의 주제는 "XR 대중화 - 현재 일반 유저들의 일상의 한 부분을 완전히 대체할 수 있는 서비스"였습니다. 여러분은 일반 유저들의 일상을 대체할 수 있는 XR 서비스에는 무엇이 있다고 생각하시나요? 저는 주제를 보자마자 아이언맨의 안경이 떠올랐습니다 ㅋㅋ 저는 그래서 팀 빌딩하는 시간에 제가 생각했던 주제와 가장 비슷한 팀을 찾았고 HUD 기반으로 팀을 꾸리신 분이 있길래 해당 팀에 합류했습니다. 그러나 ㅠㅠ 뽑기 운이 없었는지 저희 팀의 Track은 "신체적 정신적 건강 관리"가 걸리게 되어... 주제를 바꿀 수 밖에 없었습니다. 어쩔 수 없이 저희팀은 Track에 맞게 아이디어를 생각해 봤고 가장 호응이 좋았던 'AR환경에서의 자세 교정 및 건강 관리 어플리케이션'을 제..
XREAL만의 해커톤! XREAL 5기에서는 서울대학교 병원 융합의학기술원과 공동 개최하여 서울대학교 융합의학기술원 소속 의대생들과 함께 총 상금 175만 원의 규모로'/XR 기술을 활용해 함께 그려보는 어린이 환자케어의 미래/'를 주제로 해커톤이 개최되었습니다. 그 어느곳에서 서울대학교 병원 융합의학기술원과 해커톤을 할 수 있겠습니까! XREAL 뿐입니다 후후... XREAL이 궁금하시다고요? 아래 링크를 눌러주세요. Join Us 🌟XREAL은 세계 최고의 XR 중심 메타버스 연구 및 창업 네트워크🌐가 되고자 합니다.www.xreal.info 해커톤 결과XREAL 5기 'XR 기술을 활용해 함께 그려보는 어린이 환자케어의 미래/'를 주제로 해커톤에는 [장기 입원 아동 환자를 위한 블록코딩 기반..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.