using UnityEngine; using System.Collections; //------------------------------------------------------------------------- public class VelocityEstimator : MonoBehaviour { [Tooltip( "How many frames to average over for computing velocity" )] public int velocityAverageFrames = 5; [Tooltip( "How many frames to average over for computing angular velocity" )] public int angularVelocityAverageFrames = ..
"Resources" 폴더란? "Resources" 폴더는 Resources.Load 기능을 사용하여 런타임에 자산을 로드할 수 있는 특수 폴더입니다!! Resources.Load 함수를 사용하여 런타임에 로드하려는 모든 자산은 "Resources" 폴더에 배치해야 합니다.(아래참고) Resources폴더 내에 리소스들은 게임 빌드에 포함되어 있기 때문에 런타임 중에 언로드할 수 없으며 "Resources" 폴더에 큰 자산이 너무 많으면 게임 성능에 영향을 줄 수 있습니다!! DeadCamera = Resources.Load("HideAndSeek/DeadPlayer"); soundClips = Resources.LoadAll(folderName); 예시코드입니다!
public NetworkVariable Ready = new NetworkVariable(); 위와 같이 NetworkVariable을 클라이언트에서 바꾸고 싶다면 ReadyToServerRpc(); 함수를 하나 만들어서 [ServerRpc(RequireOwnership = true)] void ReadyToServerRpc() { Ready.Value = true; } 위와 같이 RequireOwnership을 true로 하면 됩니다!
InvokeRepeating란? InvokeRepeating 함수는 MonoBehaviour 클래스의 메서드로, 지정된 시간 간격으로 반복해서 메서드를 호출합니다. 일반적으로 주기적으로 실행되는 로직을 구현할 때 사용됩니다. InvokeRepeating은 총 3개의 매개변수를 받습니다! methodName: 호출할 메서드 이름 (string) time: 첫 번째 호출 이전의 대기 시간 (float) repeatRate: 반복 간격 (float) InvokeRepeating("UpdatePosition", 1f, 0.5f)는 "UpdatePosition" 메서드를 1초 후에 처음 호출하고, 그 후 0.5초마다 메서드를 호출합니다. 주의 해당 객체가 활성화되어 있어야 작동하며, 해당 객체가 비활성화되면 즉시..
유니티 OVR SDK가 버전50을 맞이해 새로운 기능들이 많이 생겨났는데요! 그 중 컨트롤러를 이용한 기능들이 한 층 더 업그레이드됐다는 소문을 들어 직접 경험해보았습니다! 경험해본 결과를 먼저 말해보자면, 햅틱(진동)기능이 가장 놀라웠습니다! 에게...진동이 거기서 거기지 뭐가 더 특별하고 차이가 있겠어? 라고 생각을 했었는데 사용해본 후에는 그 생각이 잘못되었음을 깨달았습니다..! Touch Pro Scene 먼저 OVR SDK를 다운받으면 Oculus 폴더가 생기는 것을 확인할 수 있습니다! 2022.07.13 - [Unity/VR(OVR SDK)] - OVR Project Setting 방법 OVR Project Setting 방법 💡 첫 번째, Asset Store에서 Oculus Integra..
유니티에서 unitask를 사용하기 앞서, 유니티에서 사용하는 코루틴이 무엇인지 알아야 진정한 unitask의 장점을 알 수 있습니다.지피지기 백전불태 그렇기에 유니티에 기본적으로 내장되어 있는 코루틴에 대해 자세히 알아본 다음, 유니티에서의 unitask 사용방법에 대해 알아보겠습니다! 코루틴이란?유니티에서 사용되는 코루틴은 비동기 프로그래밍을 수행하기 위한 기능 중 하나입니다. 코루틴은 일시 중지할 수 있는 함수의 실행을 가능하게 하며,특정 조건이 충족될 때까지 기다린 후(ex_ yield return)에 실행을 계속할 수 있도록 합니다. UniTask란?유니티에서 UniTask는 비동기 작업을 처리하기 위한 도구로, 유니티에 내장되어 있는 코루틴 기능을 대체하며 async/await 패턴을 지원합니..
기본 기본적으로, 유니티 프로파일러는 마지막 300 프레임만 저장하게 되어있습니다! 설정 상단에 있는 [Edit] - [Preferences]을 클릭해준 후 [Analysis] 탭의 Profiler를 눌러준 후 Frame Count을 300에서 원하는 만큼 늘려주면 됩니다!
Relay서비스와 Lobby를 구현하다 보면 문뜩 Lobby의 요소를 꾸미고 싶을 때가 생깁니다! 예를 들면, 위와 같이 로비를 생성했을 때 방의 이름, 방의 지역, 방의 숫자와 같이 말이죠! 또는, 방테두리 색깔, 방의 Private 정보 등등을 커스터마이징 할 수 있습니다!! 코드 public async Task CreateLobby(string requesterUasId, string lobbyName, int maxPlayers, bool isPrivate, Dictionary hostUserData, string limitToRegion) { var options = LobbyRegionToCreatOptions(limitToRegion); CreateLobbyOptions createOptio..
Event Camera란? Event Camera는 유니티의 이벤트 시스템에 의해 사용되어 UI 요소와 상호작용하는 데 필요한 정보를 수집합니다. 예를 들어, 플레이어가 UI 버튼을 클릭할 때 이벤트 카메라가 해당 입력을 감지하고 이벤트 시스템이 이 정보를 사용하여 적절한 처리를 수행합니다. Event Camera를 할당해주지 않을 경우 생기는 문제점 World Space나 Screen Space로 설정한 Canvas의 경우에는 Camera속성을 할당해주어야 합니다! 할당하지 않았을 경우에는 Camera를 찾기 위해 연산과정을 거쳐 리소스를 낭비하기 때문입니다! 또한, Canvas 내의 UI 요소와 상호작용하는 데 문제가 발생합니다. 이벤트 카메라가 할당되지 않은 경우 다음과 같은 문제가 발생할 수 있습..
VR 멀미 원인 VR을 하다 보면 멀미가 생기는 경우 자자합니다. 원인은 다양하지만 인간의 시야각과 VR HMD가 지원하는 시야각의 범위가 일치하지 않아서 생기는 멀미도 존재합니다. 위와 같은 멀미를 해소하기 위해서는 VR HMD의 시야각을 더 줄여주면 되는데요. 흔히 VR에서 시야각을 줄이기 위해 사용되는 기법은 터널링 기법이라고 합니다. com.unity.xr.interaction.toolkit XR Interaction Toolkit | XR Interaction Toolkit | 2.3.1 The XR Interaction Toolkit package is a high-level, component-based, interaction system for creating VR and AR experi..
Optimize Game Objects 캐릭터 프리팹을 살펴보던 중 Optimize Game Object 토글이 있길래 실험삼아 해보았습니다. Optimize Game Objects를 체크해주니 캐릭터의 Transform이 최적화된 것을 볼 수 있었습니다. Character_OP라고 되어있는 캐릭터가 Optimize Game Objects 체크되어 있는 캐릭터이며 Character는 평범한 캐릭터입니다. 즉, 모델의 트랜스폼 계층 구조를 최적화 시켜주는 역할을 하는 듯 하였습니다. 이 두 모델을 가지고 총 4번의 실험을 하였는데요 첫 번째로는 Optimize Game Objects 되어 있는 캐릭터에 Optimize Game Objects체크 되어 있는 애니메이션 클립 두 번째로는 Optimize Gam..
GitHub - NK-Studio/Unity-Debug-Optimization Contribute to NK-Studio/Unity-Debug-Optimization development by creating an account on GitHub. github.com 유튜버 "NK Studio의 유니티 스페셜 테크닉" 님이 만드신 자료입니다! Debug을 최적화 해야하는 이유 유니티 개발을 하다보면 Debug을 이용해 버그같은거나 제대로 작동하는지 파악하기 위해 사용되는 경우가 많습니다. 하지만, 이런 Debug가 에디터에서 플레이할 때만 돌아가는 것이 아니라 빌드를 하고 난 후에도 지속적으로 Debug가 보이지 않는 곳에서 생성된다는 것이 문제입니다.(불필요한 리소스를 잡아먹게 됨) 따라서, 에디터 모..
이 게임은 무슨게임? 이 게임은 유저가 닌자가 되어 과일을 자름으로써 과즙과 액션이 터지는 재미를 느낄 수 있는 게임입니다!! 가상현실의 몰입력을 바탕으로 재해석된 Fruit Ninja는 4가지 모드가 존재합니다! 클래식 - 여러분이 잘 아시고 좋아하시는 클래식 게임플레이! 3개의 목숨이 있습니다. 아케이드 - 완전한 아수라장. 광란 속을 썰어나가면서 엄청난 콤보점수를 획득하세요! 젠 - 여러분의 기량을 다듬으실 수 있는 보다 '느긋한' 경험. 연습이 완벽을 만듭니다. 새로운 ‘서바이벌’: 과일의 파도가 여러분의 얼굴로 내던져지는 동안, 여러분의 반사신경을 테스트하세요! 움찔하지 마세요. 별점 (9/10) 후한 점수를 준 이유는 게임의 중독성이 어마어마하다는 점때문이였습니다! 팔을 휘둘러 과일들을 잘라야..
이 게임은 무슨게임? 이 게임의 장르는 횡스크롤 액션 어드벤처 게임입니다! 게임의 스토리는 다음과 같습니다! 옛날 옛적, 마법이 깃든 장소인 잉크통 섬이란 곳에 형제인 컵헤드와 머그맨이, 주전자 장로의 주의 아래 걱정 없이 살고 있었다. 어느 날 컵헤드와 머그맨은 집에서 먼 곳까지 돌아다니다가 지옥에 있는 악마의 카지노에 도착하게 되었다. 도박을 하며 계속 연승을 거둬 승승장구하는데, 카지노의 주인인 악마가 나타나 자신과 주사위 던지기 내기를 하자며, 내기에서 이기면 카지노를 주고, 지면 두 사람의 영혼을 줘야한다고 말한다. 쉽게 부자가 될 생각에 눈이 먼 컵헤드는 승부를 받아들였으나 둘은 내기에서 지게 된다. 내기에서 진 컵헤드와 머그맨의 영혼을 가져가려는 악마의 앞에, 형제는 무릎을 꿇고 다른 방법이..
이 포스팅에서 사용된 코드는 아래 블로거분의 코드를 참고하였습니다! https://mentum.tistory.com/657 unity 언제나 특정 씬에서 시작하게 만들기 #. 특정 씬에서 시작하는 게임 환경 어느 씬 에서나 테스트할 수 있어야 한다!라는 개발 방침을 따르고 있지만 서버 등이 들어간 경우에는 시작 씬부터 초기화를 순차 진행하지 않으면 오류가 발 mentum.tistory.com 코드 [InitializeOnLoad] public class EditorStartInit { static EditorStartInit() { var pathOfFirstScene = EditorBuildSettings.scenes[0].path; var sceneAsset = AssetDatabase.LoadAss..
개발을 하다 보면 Project 폴더 안에 존재하는 Scenes을 찾아서 일일이 클릭하여 해당 씬으로 가야 하는 번거로움 및 불편함이 존재합니다. 불편함을 줄이고자 Rainbow Folders 에셋을 구매해봤으나 해당 Scene을 찾고 여는데에 있던 불편함은 그대로였습니다. 물론, Prefab이나 Scripts폴더 등 각 폴더들을 구분되게 해준다는 점에서 훌륭한 에셋입니다! Unity Asset - Rainbow Folders 2 후기가격 및 후기 가격은 20달러로 약 3만원 정도 합니다!(26,390원) 별점과 관심도는 좋은 편에 속합니다! Asset Setting 에셋을 임포트 해봅니다! Project Setting 탭에 들어가보시면 Rainbow Folders 탭이 생긴 것wlsdn629.tist..
GUID란? 유니티 GUID는 "Unity Globally Unique Identifier"의 약자로, Unity 엔진에서 사용되는 고유 식별자를 의미합니다. GUID는 전 세계적으로 고유한 128비트 길이의 숫자로, 리소스나 객체를 식별하고 추적할 때 사용됩니다. 유니티에서 GUID는 주로 다음과 같은 상황에서 사용됩니다: 에셋 식별: 프로젝트 내에서 에셋을 참조하거나 관리할 때, 유니티는 각 에셋에 대해 고유한 GUID를 생성하여 중복이나 충돌을 방지합니다. 객체 인스턴스화: 유니티에서 생성된 게임 오브젝트 인스턴스에 대한 고유 식별자로 사용되며, 프리팹의 경우 원본 프리팹에 대한 참조를 유지할 수 있게 도와줍니다. 네트워크 통신: 멀티플레이어 게임에서 각 클라이언트가 서로를 구분하고 통신할 수 있도..
Rainbow Folder2란?🌈 Unity 프로젝트가 복잡해지면서 폴더 관리가 어려워진 적 있으신가요? Rainbow Folders 2 에셋을 사용하면 프로젝트 폴더에 컬러와 아이콘을 추가하여 더욱 직관적이고 효율적인 작업 환경을 만들 수 있습니다. 디자인과 효율성을 동시에 챙길 수 있는 아주 유용한 도구이죠! 프로젝트 시작할 때 한순간에 고민 없이 바로 임포트 하는 에셋 중 하나입니다! Rainbow Folders 2 없이 프로젝트하다 보면 항상 폴더 찾기 어렵고, 팀 프로젝트할 때 저의 폴더를 찾기 어렵기 때문이죠! Asset Setting 에셋을 임포트 한 후에 Project Setting 탭에 들어가 보시면 Rainbow Folders 탭이 생긴 것을 확인할 수 있습니다. 에셋을 임포트 하시면 ..
자동으로 Hand Pose 2022.11.13 - [Unity/VR(OVR SDK)] - Unity OVR Hand Pose Recode(기록)하는방법 Unity OVR Hand Pose Recode(기록)하는방법 예전부터 해보고 싶었던 기능인데 드디어 하게 돼서 매우 기쁘다 먼저 HandGrabPoseTool이라는 씬을 찾도록 한다 이거는 OVR에서 제공하는 씬으로 Hand Pose를 저장하는데 도움을 주는 유용한 툴 씬이다 wlsdn629.tistory.com 수동으로 Hand Pose 설정하기 Hand Grab Interactable 컴포넌트를 보면 아래에 [Option]에 Hand Grab Pose가 존재합니다 처음에는 Element에 아무것도 없는 상태입니다! 아래 [Add HandGrabPos..