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)
  • 인기 글

  • 태그

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

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

티스토리툴바