Unity Package 안보이는거 보이게 하는 방법
프로젝트 세팅에 패키지 매니지먼트 들어가서 Enable Pre-release Packages를 체크해주면 된다 이렇게 미리볼 수 있음!
- Unity/Study
- · 2023. 1. 22.
# Dictionary란? var dictionary = new Dictionary(); dictionary.Add("Name", "KinJinwoo"); var name = dictionary["Name"]; Debug.Log(name); Dictionary 구조로 되어 있습니다 도서관을 예시로 들면, 컴퓨터로 책 제목을 치면 위치를 얻을 수 있습니다 즉, Key와 Value를 사용하여 자료를 저장합니다 중복 를 허용하지 않습니다 위 코드를 예시로, dictionary에 Name이라는 Key값을 저장했으므로, 또 다시 Name이라는 Key값을 Add할 수 없습니다! 제네릭으로 TKey와 TValue의 타입을 미리 정할 수 있어 박싱과 언박싱이 발생하지 않습니다 위 코드에는 TKey와 TValue 타입이..
Async 란? 비동기 방식을 사용할 때 사용하는 "키워드"입니다. 비동기란? "비동기"는 대기하거나 특정 주문에 묶이지 않고 작업을 수행하는 것을 의미합니다. 친구와 카톡을 하고 있다고 가정하고 할 수 있는 작업이 2가지 있다고 상상해 보겠습니다. 카톡을 하는데 친구가 말을 마칠 때까지 기다려야 한다. 친구가 카톡 입력을 마칠 때까지 기다리지 않고 바로 카톡을 답장한다. 첫 번째 작업에서는 조치를 취하기 전에 어떤 일이 발생하기를 기다리기 때문에 "동기적으로" 작업을 수행합니다. 두 번째 작업에서는 상대방이 완료할 때까지 기다리지 않고 바로 응답할 수 있기 때문에 "비동기적으로" 작업을 수행하고 있습니다. 특정 상황에 얽매이지 않고 그동안 멀티태스킹이나 다른 일을 할 수 있습니다. 컴퓨팅 또는 프로그래..
Generate Lightmap UVs를 키면 라이트맵을 베이크하기위한 추가적인 UVs를 생성한다. 텍스쳐가 깨질 때 이 부분 키고 라이트맵 다시 굽기! 이 설정 키면 설정값 조정하는게 있는데 입맛에 맞게 하기!
TimeLine 세팅하기 상단 [Window] 탭에 => [Sequencing]탭을 누른 후 [Timeline]을 누르면 Timeline 윈도우 창이 생성되는 것을 확인할 수 있습니다. Track Group 타임라인을 테스트 할 큐브를 하나 생성해준 후 큐브의 이름을 Player로 바꿔주었습니다. 다음으로 Empty GameObject를 생성해준 다음 이름을 TimelineDirector로 바꿔주었습니다. 다음으로 TimelineDirector 클릭하고 Timeline창의 Create버튼을 눌러줍니다. 만약, Timeline창에 Create버튼이 생기지 않았다면 TimelineDirector가 클릭된 상태가 아니기 때문입니다! Timeline의 Create버튼을 누르면 TimelineDirector에 P..
InverseTransformPoint란?Unity에서 `InverseTransformPoint`는 주로 좌표 변환에 사용되는 메소드입니다. 객체의 월드 좌표를 해당 객체의 로컬 좌표로 변환할 때 사용됩니다. 예를 들어, 어떤 객체 A가 World 좌표계에서 위치 (10, 10, 10)에 있고, 객체 B는 A의 자식(child) 객체로서 A의 Local 좌표계에서 위치 (1, 1, 1)에 있다고 가정해보겠습니다. 이 경우 객체 B의 월드 좌표는 (11, 11, 11)이 될 것입니다. 이때, 객체 A의 `InverseTransformPoint` 메소드를 사용하여 객체 B의 월드 좌표 (11, 11, 11)을 입력하면, 결과로 (1, 1, 1)이라는 로컬 좌표가 반환됩니다. private void OnDra..
Mirror 세팅하기 빈오브젝트를 하나 생성해 줍니다. 다음으로, 빈오브젝트 자식으로 quad를 하나 생성해 줍니다. 스케일(Size : x , y)을 9: 16으로 설정해 주고 Scale을 줄여줍니다. 줄이고 난 후에는 "좌우반전"을 위해 x값에 -1을 곱해줍니다. Render Texture 만들기 유니티 Render Texture에 대해 Render Texture을 만들면 Dimension, Size, Anti-aliasing, Enable Compatible Format, Color Format, Depth Stencil Format, Enable Mip Maps, Dynamic Scaling, Wrap Mode, Filter Mode가 존재하는 것을 확인할 수 있습니다. 이것들에 대해 간단 wls..
Null 병합 연산자 ??는 Null 조건부 연산자처럼 null 검사를 간결하게 만들어주는 역할을 한다 ?? 연산자는 두 개의 피연산자를 받아들이고 왼쪽 피연산자가 null인지를 평가한다 평가 결과가 null이 아닌 것으로 나타나면 왼쪽 피연산자를 그대로 반환하고, 만약 왼쪽 피연산자가 null인 것으로 평가되면 오른쪽 피연산자를 반환한다 예를 들어, int? a = null; Debug.Log($"{a ?? 0"}); 을 하면 null이므로 0을 출력한다 반대로 int a = 77; Debug.Log($"{a ?? 0"}); 을 하면 a가 null이 아니므로 77을 출력한다
널 조건부 연산자는 C# 6.0에서 부터 도입된 기능이다 ?. 가 하는 일은 객체의 멤버에 접근하기 전에 해당 객체가 null인지 검사하여 그 결과가 null이면 그 결과로 null을 반환하고, 그렇지 않으면 . 뒤에 지정된 멤버를 반환한다 class Food { public int num; } Food food = null; int? bar; bar = food?.num; food가 null이 아니면 member 필드에 접근하게 해준다
MeshCollider와 Rigidbody를 함께 사용하려면 Is Kinematic을 켜줘야 한다 + 많은 초보자들이 Mesh Collider 실수 하는 경우가 있는데 Convex를 키면 콜라이더의 꼭짓점 수가 줄어든다고 해야 하나? 약간 꼭짓점과 꼭짓점만 콜라이더를 이어주기 때문에 Collider 설정이 이상하게 되는 경우가 있다 오브젝트 모양 그대로 Collider를 덮어주고 싶으면 키면 안된다 약간 최적화 때문에 그런듯?
기즈모를 사용하는 이유는 에디터에서 보이는 필요한 정보를 시각적으로 노출시키기 위함이다 기즈므를 사용하면 개발에 용이한 도움이 된다 또한, 에디터에서만 처리되기 때문에 플랫폼에서는 노출되지 않는다 OnDrawGizmosSelected 오브젝트를 선택할 때 기즈모가 나오게 한다 OnDrawGizmos 매 프레임마다 호출된다 Gizmos에 사용되는 옵션은 다음과 같다 .color 색 변경 .DrawCube 큐브 생성 .DrawGUITexture 텍스쳐 생성 .DrawIcon 아이콘 생성 .DrawLine A~B (From A to B)로 향하는 라인 생성 .DrawMesh 매쉬 생성 .DrawRay Origin 을 기준으로 Direction방향으로 Ray 생성 .DrawSphere 구체 생성 .DrawWir..
== 연산자Unity에서 == 연산자를 사용하게 되면 C++(네이티브 객체)에서도 null 체크를 하게 되고 C#(유니티 객체)에서도 null을 체크하게 됩니다. 총 2번의 null을 체크하게 되는 것이므로 정확도는 올라가나 리소스를 잡아먹는 문제가 발생합니다.using System.Collections;using UnityEngine;public class TestNullCheck : MonoBehaviour{ public GameObject go; private IEnumerator Start() { go = new GameObject(); Destroy(go); yield return null; CheckUnityObjec..
위 촉수는 뼈가 총 3개 심어져 있으며 블렌더를 이용해서 제작하였다 먼저 Package Management에서 Animation Rigging을 Import해준다 그러면 이제 상단에 Animation Rigging 탭이 생겨날 것이다 아까 만든 촉수를 클릭해서 Animation Rigging탭을 누르고 Bone Renderer Setup을 누르면 Bone Renderer라는 컴포넌트가 생겨날 것이고 왼쪽에 촉수를 보면 블렌더에서 심어논 뼈를 볼 수 있을 것이다 Bone Size, Shpae, Color 등은 입맛에 맞게 변경하면 된다 다음으로 Animation Rigging 탭에서 Rig Setup을 누르면 2개의 컴포넌트와 Rig1 이라고 자식 오브젝트가 하나 생긴다 다음으로 Rig1의 자식으로 빈오브..
프로젝트 세팅에 패키지 매니지먼트 들어가서 Enable Pre-release Packages를 체크해주면 된다 이렇게 미리볼 수 있음!
IK관련 코드 using UnityEngine; public class IKManager : MonoBehaviour { public Joint root; public Joint end; public GameObject target; public float threshold = 0.05f; public float rate = 5f; public int step = 20; float CalculateSlope(Joint joint) { float delthTheta = 0.01f; float distacne1 = GetDistance(end.transform.position, target.transform.position); joint.Rotate(delthTheta); float distance2 = G..