Timeline KeyFrame에 관하여...

2023. 11. 7. 13:58·Unity/Tip
반응형

Unity의 Timeline은 키프레임을 사용하여 값을 시간에 따라 변경할 수 있는 기능입니다. Vector3, float, int는 모두 연속적인 값을 표현할 수 있는 타입이기 때문에 키프레임을 삽입할 수 있습니다.

 

그러나 string은 문자열을 표현하는 타입이기 때문에 키프레임을 삽입할 수 없습니다. 문자열은 연속적인 값을 표현하지 않기 때문입니다. 예를 들어, "Hello, world!"라는 문자열을 1초마다 키프레임을 삽입한다고 가정해 보겠습니다. 첫 번째 키프레임에서 "Hello, world!"라는 문자열이 설정되고, 두 번째 키프레임에서 "Goodbye, world!"라는 문자열이 설정됩니다. 이 경우, 두 번째 키프레임에서 문자열이 변경되었는지 확인하기 어렵습니다.

 

long도 마찬가지입니다. long은 정수를 표현하는 타입이지만, 연속적인 값을 표현하지는 않습니다. 예를 들어, 100을 1초마다 키프레임을 삽입한다고 가정해 보겠습니다. 첫 번째 키프레임에서 100이 설정되고, 두 번째 키프레임에서 200이 설정됩니다. 이 경우, 두 번째 키프레임에서 값이 변경되었는지 확인하기 어렵습니다.

 

예를 들어, long 타입의 값을 키프레임으로 저장하려면 다음과 같은 방법을 사용할 수 있습니다.

using UnityEngine;

public class Example
{
    public long value;

    public void Update()
    {
        // long 타입의 값을 float으로 변환
        float floatValue = (float)value;

        // float 타입의 값을 키프레임으로 저장
        Animator.SetFloat("MyFloat", floatValue, Time.deltaTime);
    }
}

이 코드에서는 Example 클래스의 value 속성에 long 타입의 값을 저장합니다. Update() 함수에서는 value 속성의 값을 float 타입으로 변환한 후, Animator의 SetFloat() 메서드를 사용하여 키프레임을 저장합니다.

 

물론, 이렇게 하면 키프레임의 값이 손실될 수 있다는 점에 유의해야 합니다. 예를 들어, long 타입의 값이 2147483647보다 크면 float 타입으로 변환할 때 값이 손실될 수 있습니다.

 

이러한 문제를 해결하기 위해 유니티에서는 AnimationCurve 클래스를 제공합니다. AnimationCurve 클래스는 키프레임의 값을 저장하기 위한 고정된 크기의 배열을 제공합니다. 따라서 AnimationCurve 클래스를 사용하여 키프레임을 저장하면 값이 손실될 위험을 줄일 수 있습니다.

 

AnimationCurve 클래스를 사용하여 키프레임으로 저장하려면 다음과 같은 방법을 사용할 수 있습니다.

using UnityEngine;

public class Example
{
    public long value;

    public void Update()
    {
        // long 타입의 값을 AnimationCurve에 저장
        AnimationCurve curve = new AnimationCurve();
        curve.AddKey(0, value);
        curve.AddKey(1, value + 1);

        // AnimationCurve를 키프레임으로 저장
        Animator.SetFloat("MyFloat", curve, Time.deltaTime);
    }
}

이 코드에서는 Example 클래스의 value 속성에 long 타입의 값을 저장합니다. Update() 함수에서는 value 속성의 값 AnimationCurve 클래스에 저장한 후, Animator의 SetFloat() 메서드를 사용하여 키프레임을 저장합니다.

이 방법을 사용하면 long 타입의 값을 손실 없이 키프레임으로 저장할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'Unity > Tip' 카테고리의 다른 글

UnityException: Could not find any valid targets to launch on for Android  (1) 2023.11.15
AdMob : "Ad unit doesn't match format."  (0) 2023.11.09
RectTransform : Some values driven by Canvas.  (0) 2023.11.06
Unity 빌드 에러 : Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8  (0) 2023.11.02
Unity에서 csv파일 만들기  (2) 2023.11.01
'Unity/Tip' 카테고리의 다른 글
  • UnityException: Could not find any valid targets to launch on for Android
  • AdMob : "Ad unit doesn't match format."
  • RectTransform : Some values driven by Canvas.
  • Unity 빌드 에러 : Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    카페24리뷰이관
    스크립트 실행 순서
    rtsp
    ipcamera
    스마트스토어리뷰
    unity
    셀레니움
    유니티
    쇼핑몰리뷰
    codingcommunity
    learntocode
    list
    상품 리뷰 크롤링
    라떼우유
    카페24리뷰
    devlife
    C#
    리뷰이관
    appdevelopment
    믈레코비타멸균우유
    programming101
    cv2
    programmerlife
    스크립트 실행
    Python
    리스트
    codingtips
    파이썬
    긴유통기한우유
    리뷰관리
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
Timeline KeyFrame에 관하여...
상단으로

티스토리툴바