Unity里面我现在有3个Image,我想从Resources中加载精灵图片按顺序显示在Image上

就是点击按钮显示第一个Sprite在最后一个Image上,过5到10秒将刚才显示的第一个Sprite移动到第二个Image上,再重新加载第二个Sprite到最后一个Ima... 就是点击按钮显示第一个Sprite在最后一个Image上,过5到10秒将刚才显示的第一个Sprite移动到第二个Image上,再重新加载第二个Sprite到最后一个Image上,再过5到10秒再将第一个Sprite往前移动到第一个Image上,在最后一张Image上加载第三个Sprite。三个Image是这样排列的:口(第一个Image)口(第二个Image)口(最后一个Image)。然后依次继续这样进行,直到显示完所有的Sprite 展开
 我来答
碰瓷喵
游戏玩家

2018-02-03 · 游戏我都懂点儿,问我就对了
知道小有建树答主
回答量:214
采纳率:97%
帮助的人:21.9万
展开全部

这个只要判断做好就比较简单了(话说这个if 有点多 大概思想是这个 看不下去就自己优化下吧)点击的时候调用协程就可以了 (比如下图)

按钮不好调用协程的话 写个方法 调用协程 按钮调用那个方法

下面帖代码:

public Image[] images;//image的数组(需要的话可以动态获取 也可以手托)

public Sprite[] sprites;//sprite的数组(同上)

WaitForSeconds wait;

public   float waitTime=1;//等待时间

int tim;//计次的参数

private void Start()

{

tim = 0;

wait = new WaitForSeconds(waitTime);

}

IEnumerator WaitChangeImage()

{

tim++;

ChangeImage();

yield return wait;

if (tim < sprites.Length)

{

StartCoroutine(WaitChangeImage());

}

}

private void ChangeImage()

{

for (int i = 0; i <images.Length ; i++)

{

if (tim < images.Length)

{

if (images.Length - tim + i < images.Length)

{

if (i < sprites.Length)

{

images[images.Length - tim + i].sprite = sprites[i];

}

else

{

images[images.Length - tim + i].sprite = null;

}

}

}

else

{

if (i + tim - images.Length < sprites.Length)

{

images[i].sprite = sprites[i + tim - images.Length];

}

else

{

images[i].sprite = null;

}

}

}

}

图的话回调协程没有限制 之后代码上补上了…… 如果想要最后一张图跑完全部image的话

在协程下面 改回调协程的限制为下面的就可以了

if (tim < sprites.Length+images.Length)

{

StartCoroutine(WaitChangeImage());

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式