[Unity Timeline Note] Activation Track을 사용하여 스크립트를 실행할 때 고려할 사항

9035 단어 Unitytimeline

개시하다


Unity Timeline의 Activation Track에 적절한 객체를 할당하고 해당 객체OnEnable(), OnDisble()에서 스크립트를 실행합니다.
이 방법을 시험하기 위해 액티브 트랙을 가지고 놀 때OnEnable() 왠지 타임라인에서 활약하지 않다가 처음 실행되거나 놀림을 당하면 실행되지 않는 등 동작을 잘 모르기 때문에 실행 결과가 달라진 원인을 찾아보았다.
결과만 알고 싶은 사람은 현상으로 보면까지 읽어주세요.

컨디션

  • Unity2018.1.3f1
  • Activation Track에 대한 지식


    Unity 이벤트 함수 정보


    Unity 이벤트 함수에 대한 자세한 내용은 이벤트 함수 실행 순서를 참조하십시오.Start(),Update(),OnEnable(),OnDisable()는 다음과 같다.

    Start()


    스크립트 인스턴스가 적용되면 첫 번째 프레임이 업데이트되기 전에 Start 호출
    Update() 이전에 호출된 함수입니다.

    Update()


    프레임마다 한 번씩 호출됩니다.이것은 프레임 업데이트의 주요 함수다.

    OnEnable()


    (객체가 활성 상태인 경우에만 호출됩니다.)이 함수는 대상이 활성화되면 바로 호출됩니다.이것은 MonoBehaviour 실례가 만들어졌을 때(예를 들어 관문이 시작되거나 스크립트 구성 요소가 연결된 게임 대상을 실례화할 때) 발생한 것이다.
    유닛에서 타임라인을 이용해서 게임을 하는 이벤트 장면입니다.
    그러면 타임라인에서 장면 전환을 할 때 사용했다OnEnable().
    이번에 저도 이 글을 참고하여 어느 시점에서 시간선을 전환하기 위해 이 함수를 사용했습니다.

    OnDisable()


    객체가 버려지기 전의 프레임이 업데이트되면 On Destroy가 호출됩니다.(Object.Destroy 또는 장면이 끝날 때 객체가 비활성화됨)

    실행 순서


    실행 순서
  • OnEnable()
  • Start()
  • Update()
  • OnDisable()
  • .

    Playable Director 정보


    Playable Director의 속성에 대한 설명Play On AwakeWrap Mode

    Play On Awake


    검사 후 게임이 시작되는 동시에 시간축도 동작한다.

    Wrap Mode


    이것은 타임라인 실례가 재생을 끝낼 때의 동작입니다

  • Hold
  • 타임라인의 마지막 상태를 유지한다.

  • Loop
  • 반복 재생 타임라인.

  • None
  • 재생 타임라인 이전으로 복원합니다.
  • 잠금 버튼


    Timeline의 오른쪽 위 모서리 버튼

    다른 개체를 누르면 Timeline 참조 개체를 임의로 전환할 수 없습니다.
    어쨌든 이곳은 눌러야 한다고 알려진 곳이다.
    솔직히 잘 모르겠어요
    근거Unity 2017 Timeline을 시도했습니다.
    Timeline 창은 다른 객체를 선택할 때마다 표시되지 않으므로 잠그는 것이 좋습니다.
    Preview를 누르지 않으면 객체를 Track과 연결할 수 없습니다.Preview를 누를 수 없는 경우
    none을 선택한 후 지정된 Timeline을 다시 선택하면 누를 수 있습니다.
    쓰여 있다

    Preview 버튼


    Timeline 왼쪽 위 단추

    잘 모르겠어요

    준비물


    Cube 객체를 준비하고 스크립트를 첨부합니다.

    만든 스크립트는 다음과 같습니다.
    EventTest.cs
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class EventTest : MonoBehaviour {
    
        // Use this for initialization
        private bool isOnceUpdate=true;
        void Start () {
            Debug.Log("Start");
        }
    
        void OnEnable(){
            Debug.Log("OnEnable");
        }
        // Update is called once per frame
        void Update () {
            if(!isOnceUpdate) return;
    
            Debug.Log("Update");
            isOnceUpdate=false;
        }
    
        void OnDisable(){
            isOnceUpdate=true;
            Debug.Log("OnDisable");
        }
    }
    
    Update 여러 번 뜨면 짜증나서 한 번만 뜨는 거예요.
    또 두 개의 타임라인을 준비했다.
  • 재생성 즉시 구성된 TimeLine(FirstActive) 시간 클립
  • empty는 Timeline의 재생성 길이를 늘리기 위해 구성됩니다.
  • Active 타임 클립을 재생성에서 시작하여 일정 시간 구성된 Time Line(Last Active)
  • 현상으로 보면


    많이 하고 나서.
    Preview 단추를 닫은 상태에서 스크립트에 연결된 대상을 활성화하면 실행할 때 이 대상이 활성화됩니다. (한 프레임일 수도 있습니다.) 그리고 Timeline의 Activation Track에 따라 활동 상태를 전환합니다.
    이해하기 어려우니 구체적인 예를 들자.

    여기에 Active 시간 편집이 재생 후 약간의 시간을 두는 Time Line(Last Active)을 준비해 Eventest라는 대상을 연결합니다.또한 이벤트 테스트는 이벤트 테스트입니다.cs를 할당하는 중입니다.
    현재 Preview:ON 시 Eventest 가 비활성 상태임
    Preview: OFF로 설정할 때

    Eventest 를 활성화합니다.
    TimeLine을 비활성화하면 Eventest도 활성화됩니다.

    즉, Timeline 작업이 수행되지 않은 상태에서 EventTarget 가 활성 상태임
    실행할 때 먼저 OnEnable() 또는 Start()를 호출합니다.

    집행 횟수는 한 번 한 번 집행한다.
    왜 그렇게 됐는지 구체적으로 조사하진 않았지만
    Activation Track을 사용하는 스크립트를 제대로 실행하지 못하면
    Preview 버튼을 확인하십시오.

    최후


    아마도 [Unity] 모르면 힘들 수도 있어요. Timeline과 좌표 얘기.의'타임라인을 편집한 후 캐릭터의 위치가 편차가 생긴 것은 프리뷰에서 캐릭터의 위치를 편집했기 때문'이라는 항목에 적힌 내용이 비슷하기 때문일 것이다.
    만약 익숙한 사람이 있다면 저에게 알려주세요.

    참고 문헌

  • [Unity] 구성 요소의 이벤트 실행 순서에 대한 Tips
  • 유닛에서 타임라인을 이용해서 게임을 하는 이벤트 장면입니다.
  • Unity 2017 Timeline을 시도했습니다.
  • [Unity] 모르면 힘들 수도 있어요. Timeline과 좌표 얘기.
  • 좋은 웹페이지 즐겨찾기