【发布时间】:2016-07-16 04:08:52
【问题描述】:
下午好。
在动画属性(精灵)中,如何在C#中改变某一帧的精灵? 我试图通过调用一个函数来放置一个事件,该函数采用 sprite 渲染对象并放入 sprite 字段但不更改 run 。 他运行在动画中定义它。我正在尝试直接在那里更改,但不知道该怎么做。
请帮忙!!
【问题讨论】:
标签: unity3d
下午好。
在动画属性(精灵)中,如何在C#中改变某一帧的精灵? 我试图通过调用一个函数来放置一个事件,该函数采用 sprite 渲染对象并放入 sprite 字段但不更改 run 。 他运行在动画中定义它。我正在尝试直接在那里更改,但不知道该怎么做。
请帮忙!!
【问题讨论】:
标签: unity3d
据我所见和研究,目前您无法做到这一点。
最好的解决方法,我以前做过并且强烈推荐的方法,是创建一个类似于 CustomAnimationClip 脚本的东西,其中包含一组 sprite 和一个用于从每一帧切换到下一帧的计时器。然后你可以随时通过编辑数组来改变动画的精灵。
这是一个例子:
SpriteRenderer spriteRenderer;
public Sprite[] frames;
[SerializeField] int fps;
int currentFrame = 0;
float frameTime;
float frameTimer = 0;
void Awake()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}
void Start()
{
frameTime = 1 / (float)fps;
spriteRenderer.sprite = frames[0];
}
void Update()
{
if (frameTimer < frameTime)
{
frameTimer += Time.deltaTime;
}
else
{
spriteRenderer.sprite = frames[currentFrame];
currentFrame = (currentFrame + 1) % (frames.Length);
frameTimer = 0;
}
}
【讨论】: