協程實現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
- Canvas繪製星光閃爍的生日祝福Canvas
- Openlayers利用原生Canvas繪製閃爍樣式Canvas
- [譯] 在 Flutter 中實現微光閃爍效果Flutter
- css3實現動畫閃爍效果CSSS3動畫
- vuejs在解析時出現閃爍的原因及防止閃爍的方法VueJS
- canvas簡單動畫案例(圓圈閃爍漸變動畫)Canvas動畫
- js閃爍效果JS
- 教你如何用WPF實現文字粒子閃爍動畫效果動畫
- 1、51微控制器實現LED燈的閃爍
- 簡單CSS實現閃爍動畫(+1白話講解)CSS動畫
- Phxrpc協程庫實現RPC
- canvas小球碰壁隨機運動Canvas隨機
- c51控制led閃爍
- vue頁面渲染是閃爍{{}}Vue
- Golang協程池(workpool)實現Golang
- 實現隨機顏色隨機
- QT 讓工作列圖示閃爍QT
- 隨機過程(高斯隨機過程、譜分析、白噪聲)隨機
- Java swing JFrame用repaint出現閃爍的問題解決JavaAI
- 跟羽夏去實現協程
- 運用JS 實現隨機點名 (隨機點名)JS隨機
- Flutter 混合開發實戰問題記錄(一)FlutterView閃爍FlutterView
- Arduino 初級使用 單LED等閃爍UI
- CSS3文字閃爍效果CSSS3
- fcpx影片去閃爍外掛:Remove FlickeREM
- FCPX外掛:視訊去閃爍消除頻閃工具Remove FlickeREM
- PHP7下的協程實現PHP
- CSS中如何實現偽隨機?CSS隨機
- Python 實現隨機打亂字串Python隨機字串
- JavaScript實現隨機抽獎效果JavaScript隨機
- RecyclerView使用,優化,條目閃爍問題View優化
- 隨時隨地,輕鬆實現檔案儲存共享與協作
- windows10桌面閃爍怎麼辦_windows10桌面閃爍無法使用修復方法Windows
- win10工作列閃爍重新整理怎麼辦 win10工作列閃爍重新整理的方法Win10
- 使用socket+gevent實現協程併發
- python網路-多工實現之協程Python
- canvas實現波浪效果Canvas