Unity 본캠프 TIL

Unity 본캠프 TILUnity 본캠프 TIL (25/03/04) Chapter5 Unity숙련 3D프로젝트 1일차

kk2247401 2025. 3. 3. 01:32

복습

델리게이트 Delegate

함수를 변수에 저장하여 사용, 반환값,매개변수 지정필요

축약 델리게이트 Action<T> : 반환값X   /  Func<T,resT> : 반환값 = resT   /  Pridicate<int> : int매개 bool반환

 

DOTween

doLocalMove ( 도착좌표, 도착까지 시간).setEasy(그래프).onComplete( ( ) => {  함수 완료후 실행 할 내용   } )

SetEase(Ease.Linear) 그래프모양

 

 

============================================================

 

스카이박스SkyBox

 게임내부 배경(경치)

 박스형, 반원형 존재

Window - Rendering - Lighting - Environment  에서 스카이박스 설정가능

rigidbody forcemode

 

Raycast

Ray

 new Ray(시작좌표,방향)

 Camera.main.ViewportPointToRay(출발할 카메라상의 좌표)  ==> 카메라 중심에서 출발

 Camera.main.ScreenPointToRay(보통 마우스포인트 좌표)

Raycast    광선에 맞은물체 호출 및 검사, 기타등등

 Ray 검사에 사용할 Ray

 RaycastHit  Ray에 맞은(검사된) 물체 저장 (구조체 데이터형)

    RaycastHit.point  감지된위치

    RaycastHit.Distance  출발좌표와 검사된 좌표 거리

    RaycastHit.transform  검사된 물체 transform

 MaxDistance 검사할 거리

 LayerMask 검사할 레이어

 

InputSystem  (유니티레지스트리에 포함된 패키지)

SendMessage방식

 on+ActionName 인 함수를 찾아 호출하는 방식

Invoke Event

 Inspector 상에서 함수를 설정하고 호출

  Invoke C Sharp Event

  설정하는 함수를 C# 스크립트에서 할당 (더 다양한 상황 함수 호출 가능)

 

스크립트

메서드 이름은 Send Messages 방식이라면 On+(inputSystem에서 정한 이름) 으로 꼭 맞춰야함

Invoke Unity Event방시이라면 맞추지 않아도 직접 할당할수있음

public void 메서드이름 (InputAction.CallbackContext 매개변수context)

{

    if (context.started)  { 버튼 눌리기 시작한 순간 실행할 내용 }

    else if (context.performed)  { 버튼 눌리는중 1번실행할 내용, 보통 started와 거의동시에 실행됨 }

    else if (context.canceled  { 버튼 떼진 순간 실행할내용 }

    context.started    ==> 이건 단축문이고 원본은  (context.phase == InputActionPhase.Started)  

 

   context.ReadValue<데이터형>();  ==> 입력값 신호 중에서 데이터형에 맞는 값을 읽어온다

}

 

 

 

 

 

방어코드

코드가 동작하지 않을 상황을 대비하여 예외상황에 대응가능하게 코드를 만드는것

 

Cursor.lockState

마우스커서 상태 조정,  3가지 상태 있음    Cursor.lockState = CursorLockMode.상태

  .None    (기본값) 마우스 커서 자유롭게 이동가능

  .Locked  (고정) 마우스 커서 중앙으로 고정, 마우스커서 모양 숨김

  .Confined  (창 내부 제한) 커서 보이고 움직이지만 창 외부로 나갈 수 없음

 

TryGetComponent<T>( out T component )   Where T : component;

반환값은 bool 

T타입의 컴포넌트가 있다면 out (매개변수)component에 할당하고 true반환

없다면 component=null 에 false반환

where 은 T중 component를 상속받은 T만 호출하는 제한문, 생략가능

 

 

카메라 절두체

 

Coroutine코루틴

작업을 다수 프레임에 거쳐 실행하는 메서드

함수 내부의 작업을 한번에 다 실행하고 다음으로 순서를 넘기는것이 아닌

함수 내부 작업을 정해진 부분 진행후 작업순서를 넘기고 다음 작업순서가 자신에게 돌아왔을때 진행하던 부분에서 다시 진행하는것

yield return   중단지점 (여기서 중단, 다음루틴때 여기서 다시시작)

yield return null;  다음프레임에서 다시 진행

yield return new WaitForSeconds(시간) 입력 시간 후 진행

yield return new WaitUntill(( ) => 조건 )조건 만족될때까지 대기

랜더링끝날때까지대기, 다른코루틴 끝날때까지 대기 등등

 

ScriptableObject 클래스

유니티 제공 클래스

정확한 개념은 찾아봐야함