Root 727

유니티 플레이어 게임오브젝트에 컴포넌트 붙이기

게임 플레이어를 프리팹으로 만들고, 게임 플레이어는 여러가지 컴포넌트들이 아래와 같이 붙어있다. 이렇게 기능 별로 만들어 두어야 컴포넌트 조립이 수월해진다. 예를 들자면, 적 캐릭터에 붙일 수 있는 컴포넌트들이 있겠다. Character Controller : 유니티에서 기본적으로 제공하는 캐릭터 컨트롤러 Player : 최상위 클래스에 아래의 컴포넌트들을 가지고 있을 수 있다. Player Movement Weapon Handler Player Stats Player Inventory Player Outline Effect Player Footstep Sound Grenade Handler Player Input Head Bobber 보다 자세히 보려면 아래 링크의 프로젝트를 열어보면 되겠다. http..

Engine/Unity 2023.02.12

유니티 GameObject.FindGameObjectWithTag("Player")

GameObject.Find() 보다 빠르겠다. 태그로 검색하니까. 참고 문서 https://docs.unity3d.com/ScriptReference/GameObject.FindGameObjectsWithTag.html Unity - Scripting API: GameObject.FindGameObjectsWithTag Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close do..

Engine/Unity 2023.02.11

유니티 Billboard Renderer 직접 구현할 필요가 없다

지금까지는 아래 코드와 같이 billboard를 직접 구현해서 썻는데 검색해 보니까 billboard renderer 라는 컴포넌트가 있더라! public class CameraFacingBillboard : MonoBehaviour { private Camera m_Camera; private Transform m_Transform; private void Awake() { m_Camera = Camera.main; m_Transform = transform; } void Update() { m_Transform.LookAt(transform.position + m_Camera.transform.rotation * Vector3.forward, m_Camera.transform.rotation * Ve..

Engine/Unity 2023.02.11

C# null 조건 연산자 (null conditional operator)

개발하다 보면 null reference exception이 자주 뜬다. 그래서 아래와 같이 null 체크하는 코드를 많이 볼 수 있다. 하지만 변수에 ? 조건 연산자를 쓰면 코드가 더 간결해진다. private void Update() { if (m_Target == null || Application.isPlaying == false) return; RotateCamera(); CheckWall(); CheckMeshRenderer(); } 예제 코드 출처 https://www.csharpstudy.com/CS6/CSharp-null-conditional-operator.aspx C# 6.0 널 조건 연산자 - C# 프로그래밍 배우기 (Learn C# Programming) 널 조건 연산자 (Null..

Language/C# 2023.02.11

유니티 GetChild() vs GameObject.Find() 어느 것이 속도가 빠를까.

구글링을 해보았더니, 나와 똑같은 의문을 가진 개발자가 있었다. 유니티 포럼에서도 여러 의견이 나뉘는데, 내가 봤을 때는 1 => 2 => 3 순으로 느리다. 따라서 유니티 인스펙터에 컴포넌트를 걸어두고 사용하자! 참고 문서 https://docs.unity3d.com/ScriptReference/Transform.GetChild.html Unity - Scripting API: Transform.GetChild If the transform has no child, or the index argument has a value greater than the number of children then an error will be generated. In this case "Transform child o..

Engine/Unity 2023.02.11

유니티 Camera.main은 캐싱해서 쓰자

아래 코드와 같이 Camera.main을 매번 호출할 필요는 없다. Start()에서 미리 Camera.main을 Camera 변수에 담아놓고 다른 함수에서 불러쓰는 것이 좋겠다. 성능 상 큰 문제는 아니지만, 성능을 고려하자면 캐싱해 놓고 써야겠다. public class Example : MonoBehaviour { //This is Main Camera in the Scene Camera m_MainCamera; //This is the second Camera and is assigned in inspector public Camera m_CameraTwo; void Start() { //This gets the Main Camera from the Scene m_MainCamera = Camer..

Engine/Unity 2023.02.11

유니티 [ExecuteInEditMode]로 플레이 하지 않은 상태에서 값 변경하기

해당 스크립트가 유니티 에디트 모드에서도 동작하도록 설정합니다. [ExecuteInEditMode] // 스크립트가 에디터모드에서 동작하도록 설정 public class CameraControl : MonoBehaviour { } 참고 문서 https://docs.unity.cn/kr/2017.4/ScriptReference/ExecuteInEditMode.html UnityEngine.ExecuteInEditMode - Unity 스크립팅 API Makes all instances of a script execute in edit mode. docs.unity.cn

Engine/Unity 2023.02.11

유니티 인스펙터 창에 속성들 구분하는 [Header()]

클래스의 속성들(멤버 변수)을 관리하기 편하게 구분해 주는 header가 있습니다. 아래 코드와 같이 구분 하면 인스펙터 창을 그룹화 해줄 수 있습니다. [System.Serializable] public class CameraSettings { [Header("-Positioning-")] public Vector3 m_CamPositionOffsetLeft; public Vector3 m_CamPositionOffsetRight; [Header("-Camera Options-")] public Camera m_UICamera; // UI 용 카메라 public float m_MouseXSensitivity = 5.0f; // 마우스 감도 public float m_MouseYSensitivity = ..

Engine/Unity 2023.02.11

[업무 슬럼프 극복 방법 10가지 - wishket] 링크

지나치게 많은 것을 감당하려고 하지 말자 너무 지나치게 자신을 채찍질하지 말자 겉으로 드러나는 증상이 아니라, 근본적인 문제를 해결하자 휴식시간을 미리 확보해두자 완벽주의자가 되기보다는 현재에 만족하는 사람이 되자 매일매일의 성과를 기록해두자 일하는 장소를 바꿔보자 휴가마저 완벽주의자처럼 보내려고 하지 말자 자기 자신에게 팬레터를 써보자 프로젝트를 “한 입 크기”로 잘라보자 출처 : wishket https://blog.wishket.com/%EC%97%85%EB%AC%B4-%EC%8A%AC%EB%9F%BC%ED%94%84-%EA%B7%B9%EB%B3%B5-%EB%B0%A9%EB%B2%95-10%EA%B0%80%EC%A7%80/ 업무 슬럼프 극복 방법 10가지 - wishket 누구에게나 찾아오는 슬럼프..

DevLog 2023.01.25