gpt4 book ai didi

unity-game-engine - 是否可以使用 Unity 在运行时创建 2D 动画?

转载 作者:行者123 更新时间:2023-12-02 21:29:35 27 4
gpt4 key购买 nike

我正在尝试在运行时创建动画。但是,我没有找到执行此操作的方法。

Unity可以在运行时创建它吗?

我想在网络播放器中执行以下操作:

  1. 检测鼠标点击并获取点击位置。 (那里出现花)

  2. 随机决定花朵颜色

  3. 使用由 3 个 Sprite 配置的动画来绽放花朵。 ( Sprite 只是按顺序变化)

据我确认,没有方法可以更改动画( Sprite )的颜色,因此,我正在寻找方法来更改 3 个 Sprite 的颜色并将它们组合成动画并运行它。

虽然我可以创建一个实例并更改颜色,但我找不到组合的方法。

我一开始想要设计的东西可能吗?

最佳答案

我的进口商的一部分

private AnimationClip CreateSpriteAnimationClip(string name, List<Sprite> sprites, int fps, bool raiseEvent = false)
{
int framecount = sprites.Count;
float frameLength = 1f / 30f;

AnimationClip clip = new AnimationClip();
clip.frameRate = fps;

AnimationUtility.GetAnimationClipSettings(clip).loopTime = true;

EditorCurveBinding curveBinding = new EditorCurveBinding();
curveBinding.type = typeof(SpriteRenderer);
curveBinding.propertyName = "m_Sprite";

ObjectReferenceKeyframe[] keyFrames = new ObjectReferenceKeyframe[framecount];

for (int i = 0; i < framecount; i++)
{
ObjectReferenceKeyframe kf = new ObjectReferenceKeyframe();
kf.time = i * frameLength;
kf.value = sprites[i];
keyFrames[i] = kf;
}

clip.name = name;


AnimationUtility.SetAnimationType(clip, ModelImporterAnimationType.Generic);
//if (name != "Fall")
Debug.Log(clip.wrapMode);
clip.wrapMode = WrapMode.Once;
//setAnimationLoop(clip);
AnimationUtility.SetObjectReferenceCurve(clip, curveBinding, keyFrames);

clip.ValidateIfRetargetable(true);

if (raiseEvent)
{
//AnimationUtility.SetAnimationEvents(clip, new[] { new AnimationEvent() { time = clip.length, functionName = "on" + name } });
}
//clip.AddEvent(e);
return clip;
}

关于unity-game-engine - 是否可以使用 Unity 在运行时创建 2D 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22682054/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com