UNITY/Unity Study

유니티 문법

GREEN나무 2023. 8. 19. 16:37
728x90

사용해본것 동작 순서

1. Awake : 씬이 로드될 때 씬의 각 오브젝트에 대해 호출됩니다. Start보다  먼저 동작합니다.

2. Start : 첫 프레임이나 오브젝트의 물리 업데이트 전에 호출됩니다.

3. Update : Start 이후에 매 프레임마다 반복 실행

4.LateUpdate : Update 함수에 이어서 호출되는 함수

 

정기 업데이트 이벤트

 

Update 함수는 프레임이 렌더링되기 전에 호출되고 애니메이션이 계산되기 전에도 호출됩니다.

 

void Update() {

    float distance = speed * Time.deltaTime * Input.GetAxis("Horizontal"); transform.Translate(Vector3.right * distance);

}

 

* Time.deltaTime : 이걸 곱해주면 1초에 한번 동작함

4. 이벤트 함수 : 함수는 게임플레이 중에 발생하는 이벤트에 대응하여 Unity에서 활성화됩니다.

 

Invoke : 시간 초 단위로 메소드를 호출합니다 methodName.


`Input`:
Input 시스템에 대한 인터페이스입니다.

`Input.GetButton`:
가상 버튼인 `buttonName`이 눌려져 있는 동안 `true`를 반환합니다.

`Input.GetButtonDown`:
사용자가 `buttonName`으로 식별된 가상 버튼을 누른 프레임 동안에만 `true`를 반환합니다.

`Input.GetButtonUp`:
사용자가 `buttonName`으로 식별된 가상 버튼을 떼는 첫 번째 프레임에만 `true`를 반환합니다.

`Input.GetKey`:
사용자가 이름으로 식별된 키를 누르고 있는 동안에만 `true`를 반환합니다.

`Input.GetKeyDown`:
사용자가 이름으로 식별된 키를 누르기 시작한 프레임 동안에만 `true`를 반환합니다.

`Input.GetKeyUp`:
사용자가 이름으로 식별된 키를 뗀 프레임 동안에만 `true`를 반환합니다.

`KeyCode`:
`Event.keyCode`에서 반환되는 키 코드입니다. 이 코드는 키보드의 물리적인 키와 직접 매핑됩니다.

0은 왼쪽, 1은 오른쪽 마우스 
`Input.GetMouseButton`:
 마우스 버튼이 눌려져 있는지 여부를 반환합니다.

`Input.GetMouseButtonDown`:
 마우스 버튼을 누른 프레임 동안에만 `true`를 반환합니다.

`Input.GetMouseButtonUp`:
 마우스 버튼을 떼는 프레임 동안에만 `true`를 반환합니다.

 

 


Input.GetKey : 함수와 명명 규칙을 사용하여 특정 키나 버튼에 대한 입력을 조회할 수 있습니다.
KeyCode.LeftArrow : 왼쪽 화살표 키가 눌렸을 때 
Input.GetKeyDown("f") : "f" 키가 눌렸을 때
Input.GetKeyDown(KeyCode.LeftShift) : 왼쪽 시프트 키(`KeyCode.LeftShift`)가 눌렸을 때

 


숫자 랜덤값
Random.Range(0.0, 100.0);  --> (float) 0.0 ~ 100.0까지의 범위 중 소숫점 임의의 값을 구할 수 있다. 100.0도 포함합니다.
Random.Range(0, 100);  --> (int) 0 ~ 100까지의 범위 중 정수값 중 임의의 값을 구할 수 있습니다. 100은 제외됩니다.

예시 : 
int GetRandomNumber()
    {
        int number = Random.Range(0, 101); // 0부터 100 사이의 랜덤 숫자 생성
        return number;
    }

* 반환값이 없는 함수는 void로 시작하기

 

Vector 사용

   void Start()

    {

        Vector2 playerPos = new Vector2(3.0f, 4.0f);

        playerPos.x += 8.0f;

        playerPos.y += 5.0f;

        Debug.Log(playerPos);      

    }

-------------------

    void Start()

    {// Vector 클래스끼리 뻴샘

    Vector2 startPos = new Vector2(2.0f, 1.0f);

    Vector2 endPos = new Vector2(8.0f, 5.0f);

    Vector2 dir = endPos - startPos;

    Debug.Log(dir); // (6.00, 4.00)

 

    float len = dir.magnitude; // ~.magnitude   ~의 길이(절댓값)를 반환함

    Debug.Log(len); // 7.211102

}

 

 

 

프레임 고정

 void Start()

 {

     // 프레임레이트를 60으로 고정( 1초에 60 프레임)

     Application.targetFrameRate = 60;

 }

 

 

 

transform 사용

        // 화전 속도 만큼 룰렛 회전시킴

        transform.Rotate(0,0, this.rotSpeed);

 

 

 

마우스 위치

            // 마우스를 클릭한 좌표 입니다.

            this.startPos = Input.mousePosition;

            // mousePosition

            //  사용 예시 : Vector3 Input.mousePosition (get)

            // The current mouse position in pixal coordinates.(Read Only)

            // 픽셀 좌표의 현재 마우스 위치입니다.(읽기 전용)

 

Translate 사용

        transform.Translate(this.speed, 0,0); // 이동

        // Translate

        // 사용 예시 : void Transform.Tramslate(Vector3 translation, Spave relativeTo)(+ 5 오버로드)

        // Moves the transform in the direction and distance of translation.

        // 이동 방향과 이동 거리로 변환을 이동합니다.

 

 

 

~ToString(“F정수”)

float lengh = this.goal.transform.position.x - this.car.transform.position.x;

// TMP의 텍스트 수정

this.distance.GetComponent<TextMeshPro>().text = ("Distance: " + lengh.ToString("F2") + "m");

// ~.ToString("F2")  소숫점 둘째자리까지 표시

 

콘솔 출력 

Debug.Log("출력내용이나 변수명 등");

Debug,Log("숫자" + number);

 

콜리전(객체에 물리작용하는 면적(?) 적용)

물리 엔진은 오브젝트의 스크립트에 있는 이벤트 함수를 호출하여 오브젝트 충돌을 보고합니다. OnCollisionEnter, OnCollisionStay 및 OnCollisionExit 함수는 접촉이 발생하거나 유지되거나 분리될 때 호출됩니다. 해당되는 OnTriggerEnter, OnTriggerStay 및 OnTriggerExit 함수는 오브젝트의 콜라이더가 트리거(무언가가 안에 들어오면 물리적으로 반응하지 않고 단순히 감지만 하는 콜라이더)로 설정된 경우에 호출됩니다. 이런 함수는 물리 업데이트 중에 하나 이상의 접촉이 감지되는 경우 여러 번 연속적으로 호출될 수 있고, 따라서 충돌에 대한 세부 정보(포지션과 대상 오브젝트의 정체)를 제공하는 파라미터가 함수에 전달됩니다.

void OnCollisionEnter(otherObj: Collision) {

   if (otherObj.tag == "Arrow") {

      ApplyDamage(10);

   }

}

 

 

Find 메서드 ( 중복되는 경우가 없을 때 사용)

 

Find(오브젝트이름) : 씬 중에서 오브젝트 이름과 일치하는 게임 오브젝트 한 개 찾아서 반환합니다.( 중복X 사용가능)

 

FindWithTag(태그이름) : 씬 중에서 테그 이름과 일치하는 게임 오브젝트를 한 개 찾아서 반환합니다.( 중복X 사용가능)

 

FindGameObjectWithTag(태그이름) : 씬 중에서 테그 이름과 일치하는 게임 오브젝트를 여러 개 찾아서 반환한다. 반환값은 GameObject배열입니다.

 

FindObjectOfType(타입이름) : 씬 중에서 타입 이름과 일치하는 게임 오브젝트를 한 개 찾아서 반환합니다.( 중복X 사용가능)

 

 

FindObjectsOfType(타입이름) : 씬 중에서 타입 이름과 일치하는 게임 오브젝트를 여러 개 찾아서 반환합니다. 반환값은 Object배열입니다.

 

 

숫자

        // Mathf
        // 사용방법 : struct UnityEngine.Mathf
        // A collection of common math functions. 일반적인 수학 함수 모음입니다.
        // Mathf.Ab
        // 사용 : float Mathf.Abs(float f)
        // Returns the absolute value of f. f의 절대값을 반환합니다.
        // velocity
        // 사용 : Vector2 Rigidbody2D.velocity { get; set;}
        // Linear velocity of the Rigidbody in units per second.
        // 초당 단위로 표시되는 강체의 선형 속도입니다.

Mathf.Sqrt(distanceSquared);    √ distanceSquared

예시

         // 빗변^2 = 밑변^2 + 높이^2
        float distanceSquared = width * width + height * height;
        float distance = Mathf.Sqrt(distanceSquared);

        return distance;

 

https://docs.unity3d.com/kr/2021.3/Manual/ExecutionOrder.html

 

이벤트 함수의 실행 순서 - Unity 매뉴얼

Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.

docs.unity3d.com

https://docs.unity3d.com/kr/2021.3/ScriptReference/MonoBehaviour.html

 

MonoBehaviour - Unity 스크립팅 API

MonoBehaviour is the base class from which every Unity script derives.

docs.unity3d.com

 

 

'UNITY > Unity Study' 카테고리의 다른 글

목적지까지 자동차 움직이기 Unity  (0) 2023.08.21
C#  (0) 2023.08.21
벡터 사이의 거리 구하기  (0) 2023.08.19
박스미는 만큼 HP 깎기  (0) 2023.08.19
Roulette  (0) 2023.08.14