Unity 스크립트 기본 사항

26538 단어 Unity3D

문서 목록

  • 1. Unity3D에서 몇 가지 시스템 자체 호출 방법
  • Awake()
  • Start()
  • Update() 및 FixedUpdate()
  • 2. 위치 이동과 회전
  • 1. 회전 및 이동
  • 2. 기타 게임 개체 액세스
  • 3. 벡터
  • 4. 실례화 게임 대상
  • 5. 협동 및 중단
  • 셋째, 중요한 종류
  • MonoBehaviour 클래스
  • Transform 클래스
  • Rigidbody 클래스
  • CharacterController 클래스




  • 1. Unity3D에서 몇 가지 시스템 자체 호출 방법


    Awake()

    Awake 게임 시작 전에 변수나 게임 상태를 초기화하는 데 사용합니다.스크립트의 전체 생명 주기에 한 번만 호출됩니다.Awake 모든 대상이 초기화된 후에 호출되기 때문에 다른 대상과 안전하게 대화하거나 GameObject를 사용할 수 있습니다.FindWithTag() 이런 함수는 그것들을 검색한다.모든 게임 물체의 Awake는 무작위 순서로 호출된다.따라서 스크립트 간의 인용을 Awake로 설정하고 Start로 정보를 전달해야 한다Awake는 항상 Start 이전에 호출된다.그것은 협동 프로그램을 실행하는 데 쓸 수 없다.

    Start()

    Start Update 함수가 처음 호출되기 전에만 호출됩니다.StartBehaviour의 생명주기에 한 번만 호출된다.이것은 Awake 와 달리 Start 스크립트가 사용될 때만 호출됩니다.너는 필요에 따라 초기화 코드를 조정할 수 있다.Awake는 항상 Start 이전에 실행된다.이것은 네가 초기화 순서를 조율할 수 있게 한다.모든 스크립트 실례에서 Start 함수는 항상 Awake 함수 다음에 호출됩니다

    Update() 및 FixedUpdate()

    Update()FixedUpdate()는 게임에서 업데이트할 때 자동으로 순환하여 호출됩니다
    그러나 Update는 새로운 프레임을 렌더링할 때마다 호출된다. 즉, 이 함수의 업데이트 주파수는 장치의 성능과 관련이 있고 렌더링된 물체(삼각형으로 볼 수 있는 수량)와 관련이 있다.성능이 좋은 기계에서는 fps 30이 될 수도 있고, 나쁜 것은 작을 수도 있다.이것 은 같은 게임 이 서로 다른 기계 에서 효과 가 일치하지 않고, 어떤 것 은 빠르고 어떤 것 은 느릴 수 있다FixedUpdate는 고정된 시간 간격으로 실행되며 게임 프레임의 영향을 받지 않습니다.그래서 처리Rigidbody할 때 제일 좋아요FixedUpdateFixUpdate 매 프레임이 실행되고 처리Rigidbody할 때 FixedUpdate로 대체해야 한다Update.예를 들어: 강체에 작용력을 가할 때, Update의 프레임이 아니라 FixedUpdate에 고정된 프레임을 적용해야 한다.(두 프레임의 길이가 다르다)FixedUpdate는 고정된 프레임을 그릴 때마다 한 번씩 실행한다. Update와는 달리 FixedUpdate는 렌더링 프레임이 실행되고 렌더링 효율이 낮을 때FixedUpdate 호출 횟수가 떨어진다.FixedUpdate는 각 프레임의 렌더링과 관련이 있기 때문에 물리 엔진의 계산에 비교적 적합하다.Update는 통제하기에 비교적 적합하다.

    2. 위치 이동과 회전


    1. 회전과 이동


    물체의 회전은 **Transform을 통과한다.Rotate()** 접근 방식을 통해
  • x축을 기준으로 프레임당 2°
  • 회전
    // x 2°
    using UnityEngine;
    // 
    using System.Collections; 
    // 
    public class BNUTrans : MonoBehaviour {  
        void Update() {  
            // Update()
            this.transform.Rotate(2, 0, 0);  // x 2°
        }
    }
    
  • 게임 대상은 Z축의 정방향을 따라 프레임마다 단위를 이동한다
  • using UnityEngine;
    using System.Collections;
    public class BNUTrans : MonoBehaviour {
        void Update() {
            this.transform.Translate(0, 0, 1);
        }
    }
    
  • X축을 따라 단위 이동
  • using UnityEngine;
    using System.Collections;
    public class BNUTrans : MonoBehaviour {
        void Update() {
            // X 
            transform.Translate(1, 0, 0);
            // X    
            GetComponent<Transform>().Transform(1, 0, 0);   
        }
    }
    

    transform과 Transform 사이의 대소문자 차이:transform은 변수이고 Transform은 클래스나 스크립트입니다
  • X축을 감아 고르게 훈전
  • using UnityEngine;
    using System.Collections;
    public class BNUTrans : MonoBehaviour {
        void Update() {
            this.transform.Rotate(10 * Time.daltaTime, 0, 0);
        }
    }
    
  • 강체가 Y축을 따라 초당 5개 단위 상승
  • // Unity 
    using UnityEngine;
    //     
    using System.Collections;
    //    
    public class BNUTrans : MonoBehaviour {   
        public GameObject gameObject;   // 
        void Update() {
            // FixedUpdate() 
            void FixedUpdate() {    
                // 
                Vector3 te = gameObject.GetComponent<Rigidbody>().transform.position;   
                // Y 5 
                te.y += 5 * Time.fixedDeltaTime;   
                gameObject.GetComponent<Rigidbody>().transform.position = te;   
            }
        }
    }
    

    FixedUpdate()는 정해진 물리적 시간에 따라 시스템에서 실행됩니다.

    2. 다른 게임 상대를 방문

  • 지정된 게임 대상의 스크립트 속성 가져오기
  • // 
    using UnityEngine;
    // 
    using System.Collections;   
    public class BNUOthobj : MonoBehaviour {
        //    
        public GameObject otherObject;
        // Update()   
        void Update() {
            // ‘Test’     
            Test test = objectObject.GetCompnent<Test>();
            // doSomething   
            test.doSomething();   
        }
    }
    
  • 지정된 게임 대상 하위 대상 획득
  • using UnityEngine;
    using System.Collections;   
    public class BNUOthobj : MonoBehaviour {   
        void Update() {   
            // 'Cube', X 
            this.transform.Find("Cube").Rotate(1, 0, 0); 
            // , X  
            this.transform.parent.Rotate(1, 0, 0);  
        }
    }
    
    using UnityEngine;
    using System.Collections;   
    public class BNUOthobj : MonoBehaviour {   
        void Update() {  
            // 'Cube' 
            GameObject obj1 = GameObject.Find("Cube");
            // 
            obj1.transform.Rotate(1, 0, 0); 
        }
    }
    

    3. 벡터

  • 정력에 의해 물체가 위치 이동
  • using UnityEngine;
    using System.Collections;   
    public class BNUOthobj : MonoBehaviour {   
        void Update() {  
            GameObject obj1 = GameObject.Find("Cube");// 'Cube' 
            obj1.transform.Rotate(1, 0, 0); // 
        }
    }
    

    4. 게임 상대를 실례화


    Unity에서 같은 대상을 많이 만들려면 실례화 대상(Instantiate을 통해 신속하게 실현할 수 있고 실례화된 대상은 이 대상의 모든 속성을 포함한다
    using UnityEngine;
    using System.Collections;
    public class BNUIns : MonoBehaviour {
        public Transform prefab;
        // Awake()
        public void Awake() {
            int i = 0;
            while(i < 5) {
                // 
                Instantiate(prefab,new Vector3(i * 2.0F, 0, 0), Quaternion.identity);
                i++;
            }
        }
    }
    

    5. 협동과 중단


    협동 프로그램:
    주 프로그램이 실행될 때 현재 프로그램의 실행을 돕기 위해 다른 논리 처리를 동시에 시작합니다.다중 스레드와 달리 모든 협동 프로그램은 주 스레드에서 실행되며, 단일 스레드이기도 하다
  • StartCoroutine()협동 프로그램 시작
  • StopCoroutine() 현재 협동 프로그램 종료(MonoBehaviour 중)
  • StopAllCoroutine() 모든 협동 프로그램 종료(MonoBehaviour 중)
  • using UnityEngine;
    using System.Collections;
    public class BNUCoroutine : MonoBehaviour {
        IEnumerator Start() {
            // 
            StartCoroutine("DoSomething",2.0F); 
            // 1s
            yield return new WaitForSeconds(1);
            // 
            StopCoroutine("DoSomething");    
        } 
        IEnumerator DoSomething(float someParameter) {
            while(true) {
                print("DoSomething Loop");
                yield return null;
            }
        }
    }
    

    중요한 종류


    MonoBehaviour 클래스


    MonoBehaviour 클래스는 C# 스크립트의 기본 클래스이며 Behaviour 클래스에서 상속됩니다.C# 스크립트에서 MonoBehaviour 클래스를 직접 또는 간접적으로 상속해야 합니다.
    MonoBehaviour 클래스에서 자주 사용하는 재작성 가능 방법
    메서드
    설명
    Awake
    스크립트 실례가 불러올 때 이 방법은 리셋됩니다
    Start
    Update()가 처음 호출되기 전에 호출됨
    Update
    스크립트가 시작된 후, 방법은 매 프레임마다 유용하게 사용된다.
    FixedUpdate
    스크립트가 시작된 후, 고정된 시간에 한 번 호출합니다
    MonoBehaviour 클래스에서 계승할 수 있는 멤버 방법
    구성원 메서드
    설명
    GetComponent
    게임 물체에 지정한 이름을 되돌려주는 구성 요소
    Instantiate
    게임 개체 인스턴스화

    Transform 클래스


    장면의 모든 구성 요소에는 Transform 구성 요소가 있는데 그것이 바로 Transform 유형의 실례화된 대상이다. 물체의 위치, 회전과 축소를 조종하는 데 사용된다.
    Transform 클래스에서 자주 사용하는 구성원 방법
    구성원 메서드
    설명
    Transform
    게임 대상의 방향과 거리를 이동하다
    Rotate
    회전 각도

    Rigidbody 클래스


    Rigidbody 구성 요소는 물리적 효과에서 물체의 상태를 시뮬레이션할 수 있습니다.예를 들어 물체로 하여금 중력, 탄력, 마찰력 등을 가지게 하다.

    CharacterController 클래스


    캐릭터 컨트롤러는Character Controller류의 실례화 대상으로 3인칭 또는 1인칭 게임 캐릭터 제어에 사용된다
    [>>이상 부분 클래스 중 일부 방법]
    【참고문장】
  • (Unity 3D 게임 개발)
  • Unity3D에서 자주 사용하는 몇 가지 시스템 자체 호출의 중요한 방법
  • Update()와 FixedUpdate()의 차이
  • 좋은 웹페이지 즐겨찾기