본문 바로가기
반응형

유니티 공부158

C# - TryWriteBytes TryWriteBytes 메모리에 새로운 배열을 할당하는 대신 이미 할당된 메모리 영역인 세그먼트 버퍼를 활용하여 데이터를 작성한다. 그러므로 Span를 사용하여 기존의 메모리를 참조한다. 이로인해 데이터를 복사하는 시간과 메모리 할당 비용이 줄어든다. public static bool TryWriteBytes (Span destination, int value); 매개변수 destination : 쓰고자 하는 바이트 데이터의 목적지를 나타내는 Span value : Span에 쓰여질 int 값 반환 쓰기 작업의 성공 여부 true인 경우 destination의 크기가 작아서 int값을 쓰는데 충분한 공간이 있는 경우 int value = 12345; Span destination = new byte[4.. 2023. 8. 3.
Unity - NavMeshAgent를 사용해서 게임오브젝트를 랜덤으로 움직여보기 1. 돌아다닐 영역 설정 01 Window - Navigation 클릭 02 Object - Navigation Static 클릭 03 Bake탭에 들어가서 Bake누르면 영역 설정 완료 04 움직일 GameObject에 NavMeshAgent 추가 Base Offset, Height등 조절하기 2. 랜덤으로 돌아다니기 01 현재 게임 오브젝트에 부탁된 NavMeshAgent 컴포넌트를 찾아 agent변수에 할당 NavMeshAgent agent; private void Start() { agent = GetComponent(); } 02 동물이 목적지에 도착하거나 경로를 탐색중이지 않을때만 돌아다니게 하기 if (!agent.pathPending && agent.remainingDistance < 0... 2023. 8. 2.
Unity - NavMeshAgent NavMeshAgent NavMesh위에서 경로를 계산하고 이동하는데 사용된다. NavMesh는 이동가능한 경로를 나타내며 NavMeshAgent는 이 경로를 이동할 수 있도록 도와준다. 프로퍼티 01 destination NavMeshAgent가 이동하려는 목적지 위치 (SetDestination()를 사용하여 목적지를 설정하거나 GetDestination()을 사용하여 현재 설정된 목적지를 가져올 수 있다.) public Vector3 destination; 02 speed NavMeshAgent의 이동속도를 설정하거나 가져올 수 있다. public float speed; 03 angularSpeed NavMeshAgent의 회전속도를 설정하거나 가져올 수 있다. public float angular.. 2023. 8. 2.
Unity - SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule 에러 고치는 법 SerializationException: Type 'UnityEngine.MonoBehaviour' in Assembly 'UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable. 오류를 해결해보자 해결 방법 [System.Serializable] public class Example : MonoBehaviour [System.Serializable] 설정한 클래스에 MonoBehaviour가 존재하는지 체크하면된다. 아래와 같이 수정해주면 오류가 해결된다. [System.Serializable] public class Example 2023. 8. 2.
Unity - NPC클릭하면 플레이어 쳐다보게 하는 법 NPC 클릭하면 플레이어 쳐다보게 하는 법 01 변수 설정 public Transform player; private Camera mainCamera; private Quaternion originalRotation; 02 메인카메라와 NPC의 초기 회전값 설정 void Start() { mainCamera = Camera.main; originalRotation = transform.rotation; } 03 마우스 왼쪽 버튼이 클릭 되었을때 Raycast를 통해 오브젝트 판별 void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Ray.. 2023. 7. 21.
C# - ArraySegment<T> Struct ArraySegment Struct 새로운 배열을 생성하거나 데이터를 복사하지 않고도 원본 배열의 특정 부분에 접근할 수 있다. 그렇기 때문에 원본 배열을 부분만 조작하거나 사용할 수 있다. 01 구성 struct ArraySegment { T[] array; // 원본 배열 int offset; // 배열의 시작 위치 int count; // 배열에서 사용될 요소의 개수 } 02 사용 예시 byte[] originalArray = new byte[1000]; ArraySegment arraySegment = new ArraySegment(originalArray, 100, 200); byte[] subArray = arraySegment.Array; // 원본 배열의 참조를 얻을 수 있다 int off.. 2023. 7. 19.
반응형