協程實現canvas影像隨機閃爍
如圖,閃爍截圖。程式碼如下,掛在canvas下的image上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
//獲得image列表,將列表索引打亂,然後順序的顯示圖片並閃爍(使用協程)
//
//類的方法transform.childCount
//transform.GetChild (i)獲得子物件
//strat函式可以使用協程,update不可以使用協程
public class MyRandomFlash : MonoBehaviour {
private List<Image> imagelist =new List<Image> ();//注意是List<Image>型別的,而不是Image.
private float flashtime = 1f;
public float intervalTime = 0.5f;
// Use this for initialization
IEnumerator Start()
{
imagelist.Clear();
//初始化imagelist列表
int len = transform.childCount;
for (int i = 0; i < len; i++)
{
//imagelist[i] = transform.GetChild (i).GetComponent <Image>() ;//這裡也可以使用列表的add方法
imagelist.Add(transform.GetChild(i).GetComponent<Image>());
}
List<int> myindex = GetRandomIndexs(imagelist.Count);
for (int i = 0; i < imagelist.Count; i++)
{
Image myimage = imagelist[myindex[i]];
StartCoroutine(Flash(myimage));
yield return new WaitForSeconds(Random.Range(0, intervalTime));
}
}
// Update is called once per frame
//strat中的變數不能在update中使用
//協程實現圖片閃爍
IEnumerator Flash(Image image) {
for (float f=1f;f>0;f=f-Time .deltaTime/flashtime/2 ) {
Color c = image.color;
c.a = f;
image.color = c;
yield return 0;
}
for (float f = 0f; f <1; f = f + Time.deltaTime / flashtime / 2)
{
Color c = image.color;
c.a = f;
image.color = c;
yield return 0;
}
yield return 0.2f;
}
//獲得隨機的索引
List<int> GetRandomIndexs(int count)
{
List<int> result = new List<int>();//儲存最終的索引
List<int> list = new List<int>();//輔助實現不重複
for (int i = 0; i < count; i++)
{
list.Add(i);
}
while (list.Count > 0)
{
int index = Random.Range(0, list.Count);
Debug.Log(index);
result.Add(list[index]);
list.Remove(list[index]);
}
return result;
}
}
相關文章
- Flutter——實現閃爍效果Flutter
- HTML5-canvas動畫閃爍分析HTMLCanvas動畫
- 實現閃爍燈星星動畫動畫
- Canvas繪製星光閃爍的生日祝福Canvas
- Openlayers利用原生Canvas繪製閃爍樣式Canvas
- css3實現動畫閃爍效果CSSS3動畫
- [譯] 在 Flutter 中實現微光閃爍效果Flutter
- ngCloak實現angular初始化閃爍最佳實踐GCAngular
- canvas簡單動畫案例(圓圈閃爍漸變動畫)Canvas動畫
- vuejs在解析時出現閃爍的原因及防止閃爍的方法VueJS
- 教你如何用WPF實現文字粒子閃爍動畫效果動畫
- canvas實現的隨機生成漂浮小球程式碼例項Canvas隨機
- js閃爍效果JS
- 簡單CSS實現閃爍動畫(+1白話講解)CSS動畫
- js點選div實現閃爍效果程式碼例項JS
- javascript實現的div塊閃爍效果程式碼例項JavaScript
- 1、51微控制器實現LED燈的閃爍
- canvas隨機生成星星(轉)Canvas隨機
- PHP 協程實現過程詳解PHP
- canvas小球碰壁隨機運動Canvas隨機
- canvas圓形隨機漂浮效果Canvas隨機
- Golang協程池(workpool)實現Golang
- Phxrpc協程庫實現RPC
- vue頁面渲染是閃爍{{}}Vue
- 實現隨機顏色隨機
- canvas實現的跟隨滑鼠的彩色絲帶效果Canvas
- Java影像灰度化的實現過程解析Java
- Python協程greenlet實現原理Python
- 跟羽夏去實現協程
- QT 讓工作列圖示閃爍QT
- 隨機過程(高斯隨機過程、譜分析、白噪聲)隨機
- mysql實現隨機查詢MySql隨機
- 運用JS 實現隨機點名 (隨機點名)JS隨機
- windows10桌面閃爍怎麼辦_windows10桌面閃爍無法使用修復方法Windows
- ios cocos2d 畫線出現閃爍問題iOS
- PHP7下的協程實現PHP
- python中的協程及實現Python
- fcpx影片去閃爍外掛:Remove FlickeREM