2022. 8. 9. 08:54ㆍC#
public class Inklie : MonoBehaviour
MonoBehavionur :유니티의 기본 클래스 , 이렇게 상속받는 클레스는 유니티 에디터에서 게임 오브젝트로 부착가능
MonoBehavionur를 사송 받는 컴포넌트는 생성 ,업데이트 , 소멸의 광정을 거침
초기화와 관련된 특수함수
생성 : Awake() , OnEnable() , Start()
Awake() : 스크립트 인스턴스가 로딩 될때 단한번에 호출됨 , 컴포넌트에 대한 초기화가 필요한 경우
Start() : 스크립트 인스턴스가 로딩 될때 단한번만 호출됨
Start() 와 Awake()의 차이점
Start와 Awake는 둘 다 MonoBehaviour 클래스가 초기화 될 때 호출 되는 이벤트 함수다. 이 두 함수는 거의 비슷한 방식으로 동작하지만 Awake가 먼저 호출 되고 Start가 호출 된다는 호출 순서와, Awake는 Start와 달리 스크립트가 비활성화 상태일 때도 호출 된다는 차이를 가지고 있다. 이에 대한 자세한 사항은 뒤에서 자세히 설명 하도록 하겠다.
가장 먼저 우리가 알아야할 것 중에 하나는, Start와 Awake를 같이 사용하면 초기화 작업을 두 단계로 분리할 수 있다는 것이다. 예를 들어 스크립트 자체의 초기화(예: 컴포넌트 생성 시 참조와 변수를 초기화하는 것들)를 Awake에서 완료하고 다른 스크립트의 Start에서 해당 데이터에 접근하여 사용하도록 하여 초기화가 되지 않은 데이터에 접근하는 오류를 방지 할 수 있다.
- 스크립트가 비활성화 된 상태에서 개체가 생서되면 Awake 는 호출되지만 Start는 호출되지 않는다
설명을 위해 매우 간단한 예제 스크립트를 만들어 각각의 역활은 Awake, Start가 실행 될 때 단순히 로그를 찍는 것 뿐이다
Script1.cs
public class Script1 : MonoBehaviour
{
void Awake(){
Debug.Log("script1 Awake")'
}
void Start()
{
Debug,Log("script1 Start)
}
}
Script2.cs
public class Script2 : MonoBehaviour
{
void Awake()
{
Debug.Log("Script2 Awake");
}
void Start()
{
Debug.Log("Script2 Start");
}
}
비활성화 한 스크립트2 경우 Start는 실행이 되지 않았지만 Awake 경우는 스크립트가 비활성화가 되어 있어도 실행이 되는 된다
-Start는 코루틴으로 작성될수 있다
기본적으로 Start함수는 void 타입을 리턴하도록 자동 생성된다 .하지만 리턴 타입을 IEnumerator로 변경하는 것만으로 Start 함수를 코루틴으로 만들수 있고 , 이는 Start 내부의 초기화 코드를 지연 호출할 있다는것을 의미한다
OnEnable() : 상속받는 컴포넌트가 있는 게임오브젝트를 활성화 될때마다 호출
참고 - OnEnable() 은 공동 루틴이 될수 없다
// Implement OnDisable and OnEnable script functions.
// These functions will be called when the attached GameObject
// is toggled.
// This example also supports the Editor. The Update function
// will be called, for example, when the position of the
// GameObject is changed.
using UnityEngine;
[ExecuteInEditMode]
public class PrintOnOff : MonoBehaviour
{
void OnDisable()
{
Debug.Log("PrintOnDisable: script was disabled");
}
void OnEnable()
{
Debug.Log("PrintOnEnable: script was enabled");
}
void Update()
{
#if UNITY_EDITOR
Debug.Log("Editor causes this Update");
#endif
}
}
'C#' 카테고리의 다른 글
유니티 - 룰렛 과 카운터 다운 타이머 만들기 !(따로) (0) | 2022.08.09 |
---|---|
유니티 -전자 시계 스크립트 (마침 시계가 필요할때!) (0) | 2022.08.09 |
[유니티] 3D포탑이동 - 자연스럽게 환경변화(비디오클립 방식) (0) | 2022.06.25 |
유니티 - 마우스 잡고 UI이동 (0) | 2022.06.25 |
for 문 연습 하기 좋은 챕터2 - 스네이크 게임(난이도 1) (0) | 2022.06.25 |