ABOUT ME

Today
Yesterday
Total
  • 유니티 함수정리1
    유니티 2022. 2. 1. 20:41

    void Debug.Log(object message) // 콘솔창에 메시지를 출력한다.

    ex) Debug.Log("Hello Unity"); // 콘솔창에 "Hello Uninty" 메시지 출력

     

    GameObject GameObject.Find(string name) // 하이라키에 있는 객체의 이름과 매개변수name을 비교하여 검색된 객체를 GameObject형으로 반환한다.

    ex) GameObject ob = GameObject.Find("Cube"); // 이름이 "Cube"인 객체를 검색하여 ob객체에 반환

    주의) 부하가 심하기 때문에 자주 사용되지 않는다.

     

    new GameObject { }  // 하이라키에 객체를 생성한다. 생성자를 통해 이름 등을 정의할 수 있다.

    ex) GameObject ob = new GameObject { name = Manager } // 이름이 "Manager"인 객체를 생성

     

    GameObject.AddComponent<?>(); // 객체에 ?에 해당하는 컴포넌트를 추가한다.

    ex)

            GameObject ob; // ob객체 생성
            ob.AddComponent<Box Collider>(); // ob객체에 Box Collider컴포넌트 추가

     

    bool Input.GetKey(KeyCode key) // 매개변수 key값에 대해 bool값을 반환

    enum UnityEngine.KeyCode // 키보드에서 원하는 키 값을 반환

    ex) if( Input.GetKey(KeyCode.W) ) // W키를 누르는 동안 true값 반환

     

    Vector3 Transform.TransformDirection(Vector3 direction) +1오버로드 // Local좌표 - > World좌표로 방향을 변환

    Vector3 InverseTransformDirection(Vector3 direction) // World좌표 -> Local 좌표로 방향을 변환

    ex) transform.TransformDirection(Vector.3forward); // 객체기준으로 앞(z축)으로 진행

    객체를 키보드를 통해 움직일 때 객체가 회전하면 회전한 객체를 기준으로 앞뒤로 움직일 수 있다.

     

    void Transform.Translate(Vector3 translation, Space relativeTo) // Local기준으로 객체를 변환

    +5 오버로딩

    ex) transform.Translate(Vector3.forward) // 객체기준으로앞(z축)으로 진행

     

     

    float Vector3.magnitude { get; }  // 벡터의 크기를 float(실수)값으로 반환. 식은 아래와 같이 정의되어있다.

    ex)

            Vector3 vec = new Vector3(1, 2, 3);
            float vectorSize = vec.magnitude;

     

    Vector3 Vector3.normalized { get; }; // 크기가 1인 단위벡터를 반환

    ex)

            Vector3 dir = new Vector3(5, 0, 0); // 크기가 (5, 0, 0)인 벡터를 반환
            dir = dir.normalized; // x축의 크기만 존재하므로 크기가 (1, 0, 0)인 단위벡터를 반환

     

    Vector3 Transform.eulerAngles{ get; set; } // World좌표 기준, 오일러각도를 이용하여 degree단위로 회전함

    ex) transform.eulerAngles += new Vector3(0, Time.deltaTime * 100, 0); // y축을 기준으로 100씩 회전

     

    void Transform.Rotate(Vector3 euler) // 객체를 회전시킴.

    ex) transform.Rotate(new Vector3(0, Time.deltaTime * 100, 0));// y축을 기준으로 100씩 회전

     

    Quaternion Quaternion.Euler(Vector3 euler); // 원리는 매우 어려우니까 예시를 통해 사용방법만 익히기.

    ex)

        float angle = 0.0f;
        void Update()
        {
            angle += Time.deltaTime * 100.0f; // += 연산을 통해서 100씩 회전
            transform.rotation = Quaternion.Euler(new Vector3(0, angle, 0)); // y축을 기준으로 100씩 회전
        }

     

     

    Quaternion Quaternion.LookRotation(Vector3 forward); // 객체가 원하는 방향을 바라보게 함.

    ex)

    if(Input.GetKey(KeyCode.W)) // W키를 누르면
    {
    	// 절대좌표 기준으로 앞(Z축)을 바라보게 함.
            transform.rotation = Quaternion.LookRotation(Vector3.forward); 
    }

     

    Quaternion Quaternion.Slerp(Quaternion q1, Quaternion q2, float a) // 객체를 부드럽게 회전시킴.

    q1은 회전 전 q2은 회전 후, a는 0~1사이 값인데 0은 회전 전에 가깝고 1은 회전 후에 가까움.

    ex) transform.rotation

             = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(Vector3.forward), 0.2f);

     

    GameObject Object.Instantiate<GameObject>(GameObject original) // 프리펩을 통해 새로운 오브젝트를 생성함

    ex)

    GameObject prefab; // 유니티에서 임의의 오브젝트를 prefab에 저장

    Instantiate(prefab); // 1개의 prefab오브젝트 생성

     

    void Object.Destroy(Object obj, float t) // 오브젝트를 t초후에 파괴함.

    ex)

        public GameObject prefab;
        void Start()
        {
            GameObject ob = Instantiate(prefab); ;
            Destroy(ob, 3.0f); // 3초후에 ob 오브젝트 파괴
        }

     

    GameObject Resources.Load<GameObject>(string path) // 경로를 통해서 Project창에 있는 프리펩을 반환

    ex)

        public GameObject prefab;
        GameObject cube;
        void Start()
        {
            // Project -> Resources -> Prefabs -> Cube객체를 불러옴
            prefab = Resources.Load<GameObject>("Prefabs/Cube");
            cube = Instantiate(prefab);
        }

    주의) Project에 Resources폴더를 생성하고 모든 리소스들은 Resources안에서 관리되어야 함.

     

    bool Physics.Raycast(Vector3 origin, Vector3 direction, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction); + 15오버로드 // 보이지 않는 레이저를 쏴서 레이저에 충돌여부에 따라 bool값을 반환, 레이저에 여러개의 객체가 겹쳐지면 가장먼저 맞은 객체에 대해 반환이됨.

    void Debug.DrawRay(Vector3 start, Vector3 dir, Color color); +3오버로드 // 보이지 않는 레이저를 Scene화면에서 그려줌

    ex)

            Debug.DrawRay(transform.position, Vector3.forward, Color.red); // 레이캐스팅은 빨간색으로 그림
            if(Physics.Raycast(transform.position, Vector3.forward)) // 레이캐스팅랑 충돌하면 true값이 반환됨
            {
                Debug.Log("Raycast!"); // 충돌하면 콘솔창에 "Raycast!"메시지를 띄움
            }

     

     

    RaycastHit[] Physics.RaycastAll(Vector3 origin, Vector3 direction, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction); +7 오버로드 // 레이캐스팅에 충돌한 객체를 RaycastHit배열에 저장함.

    ex)

            // 레이캐스팅은 빨간색으로 그림
            Debug.DrawRay(transform.position + Vector3.up, look * 10, Color.red); 
            
            RaycastHit[] hits; // 레이캐스팅에 충돌한 객체를 저장하기 위한 배열 선언
           
           // 레이캐스팅에 충돌한 모든 객체의 정보를 hits배열에 저장
            hits = Physics.RaycastAll(transform.position + Vector3.up, look, 10); 
    
            // 범위기반 for문
            foreach (RaycastHit hit in hits) 
                Debug.Log($"Raycast {hit.collider.gameObject.name}!"); // 모든 객체의 정보를 콘솔창에 출력

     

    Vector3 Input.mousePosition { get; } //  마우스의 위치를 반환하는 가져오는 함수

    ex) Debug.Log(Input.mousePosition); // 콘솔창에 마우스의 위치를 띄움

     

    Vector3 Camera.ScreenToViewportPoint(Vector3 position) // position의 위치를 화면 비율로 나타내어 벡터값을 반환하는 함수

    ex)  Debug.Log(Camera.main.ScreenToViewportPoint(Input.mousePosition)); // 콘솔창에 마우스의 위치를 화변 비율로 나타내어 띄움

     

    bool Input.GetMouseButtonDown(int button) // 마우스 클릭하면 bool값을 반환, 0은 좌클릭, 1은 우클릭

    ex) if (Input.GetMouseButtonDown(0)) { } // 좌클릭시 if문 실행

     

    int LayerMask.GetMask(params string[] layerNames) // 레이어 이름을 받아서 검색에 해당하는 레이어의 번호를 정수형으로 반환

    ex)  LayerMask mask = LayerMask.GetMask("Monster");

     

    void Transform.LookAt(Transform Target, Vector3 worldUp); +3 오버로드 // Target을 쳐다보게하는 함수

    ex) 

        GameObject _player; // 플레이어
        void LateUpdate() // 카메라 떨림 현상을 제거하기 위해 LateUpdate사용
        {
            transform.LookAt(_player.transform);
        }

     

    Vector3 Raycast.point { get; set; } // 레이캐스팅과 충돌한 곳의 좌표를 반환

    ex)

                RaycastHit hit;
                Vector3 dist = hit.point;

     

    void Animator.Play(string stateName); // 애니메이션의 이름을 받아서 해당하는 애니메이션 재생

    ex)

                Animator anim = GetComponent<Animator>();
                anim.Play("RUN"); // 이름이 RUN인 애니메이션 재생

     

    void Animator.SetInteger(string name, int value); // 정수값을 통해 애니메이션 파라미터 설정
    void Animator.SetBool(string name, bool value); // bool값을 통해 애니메이션 파라미터 설정
    void Animator.SetFloat(string name, float value); // float값을 통해 애니메이션 파라미터 설정
    void Animator.SetTrigger(string name);  // 애니메이션 실행

    ex)

                float wait_run_ratio = 0.0f;
    
                wait_run_ratio = Mathf.Lerp(wait_run_ratio, 1, 10.0f * Time.deltaTime);
                Animator anim = GetComponent<Animator>();
                anim.SetFloat("wait_run_ratio", wait_run_ratio);

     

    void SceneManager.LoadScene(string sceneName); // Scene의 이름을 통해서 Scene을 로드함

    ex)

    using UnityEngine.SceneManagement; // Unity가 제공하는 SceneManager클래스를 이용하기 위해서 선언
    
    public class LoginScene : BaseScene
    {
        private void Update()
        {
            if(Input.GetKeyDown(KeyCode.Q)) // 키보드 Q를 입력하면
            {
                SceneManager.LoadScene("GameScene"); // "GameScene"이라는 이름의 Scene을 불러온다.
            }
        }
    }

    '유니티' 카테고리의 다른 글

    프리펩(Prefab)  (0) 2022.02.03
    InputManager  (0) 2022.02.03
    플레이어 설정  (0) 2022.02.03
    Managers 클래스와 싱글톤(Singleton) 패턴  (0) 2022.02.01
    에디터 입문  (0) 2022.02.01
Designed by Tistory.