Skip to content

Latest commit

 

History

History
90 lines (65 loc) · 2.83 KB

migration_ja.md

File metadata and controls

90 lines (65 loc) · 2.83 KB

Migration Guides

Magic Tweenは現在も開発中のライブラリであり、バージョンの移行に伴った破壊的変更が行われる可能性があります。ここでは、バージョンのアップデートに伴う移行のガイドを提供します。

v0.1 to v0.2

概要

v0.1からv0.2では、ECSに関するTweenの設計を一新しました。これにより、ECSでMagic Tweenを用いる際のコードにいくつか変更を加える必要が生じます。

Tween.Entityに関する変更

Tween.Entity.To()およびTween.Entity.FromTo()はv0.2よりComponentの型引数の指定が必要になりました。

Entity entity;
float endValue;
float duration;

// v0.1
Tween.Entity.To<ExampleTranslator>(entity, endValue, duration);

// v0.2
Tween.Entity.To<ExampleComponent, ExampleTranslator>(entity, endValue, duration);

LocalTransformに対応したTranslatorの構造体の名前を変更

上記の変更に伴い、記述量を削減するためLocalTransformに対応したTranslatorの名前を変更しました。v0.2では接頭辞のLocalTransformを削除した名前に変更されています。

Entity entity;
float3 endValue;
float duration;

// v0.1
Tween.Entity.To<LocalTransformPositionTranslator>(entity, endValue, duration);

// v0.2
Tween.Entity.To<LocalTransform, PositionTranslator>(entity, endValue, duration);

カスタムTranslatorに関する変更

ITweenTranslatorからTargetEntityのプロパティを削除しました。v0.2からは対象のEntityの追跡は専用のComponentによって行われます。

// v0.1
public struct ExampleTranslator : ITweenTranslator<float, ExampleComponent>
{
    // Entityの追跡にTargetEntityが必要
    public Entity TargetEntity { get; set; }

    public void Apply(ref ExampleComponent component, in float value)
    {
        component.value = value;
    }

    public float GetValue(ref ExampleComponent component)
    {
        return component.value;
    }
}

// v0.2
public struct ExampleTranslator : ITweenTranslator<float, ExampleComponent>
{
    // TargetEntityが不要に

    public void Apply(ref ExampleComponent component, in float value)
    {
        component.value = value;
    }

    public float GetValue(ref ExampleComponent component)
    {
        return component.value;
    }
}

また、TweenTranslationSystemBaseにTweenOptionsとTweenPluginを指定する型引数が追加されました。v0.2からはこれら二つを指定してSystemを作成する必要があります。

// v0.1
public partial class ExampleTweenTranslationSystem : TweenTranslationSystemBase<float, ExampleComponent, ExampleTranslator> { }

// v0.2
public partial class ExampleTweenTranslationSystem : TweenTranslationSystemBase<float, NoOptions, FloatTweenPlugins, ExampleComponent, ExampleTranslator> { }