推薦閱讀:
- 我的CSDN
- 我的博客園
- QQ群:704621321
- 我的個人博客
前言
前面時間趕專案,現在到了優化的時間,各種功能修改,影片特效增加,頭都大了,又到了自己最不擅長,最討厭的加影片時間,雖然各種影片看來讓人賞心悅目但是可能真的是不擅長的原因,總是拒它于千里之外,雖然內心是抗拒的,但,在其位,謀其職,逃不脫也躲不掉,算了,不吐槽了,擼起袖子就是干,這次要實作的影片是:幾行文本,逐漸顯示,例如:第一行文本顯示后間隔x秒顯示第二行,第二行顯示后,間隔x秒顯示第三行…以此類推,
開始
首先將文字內容初始化并用順序表self.joinMe存盤起來,由于文本要顯示出來,那么初始狀態注定是要將其隱藏的,最終每行顯示的內容為XXX:XXX
local title = {
[1] = "微信公眾號",[2] = "微信號",[3] = "QQ群[1]",[4] = "QQ群[2]",
[5] = "接單賺錢群", [6] = "csdn" ,
}
local name = {
[1] = "愛上游戲開發",[2] = "codequeen",[3] = "704621321",[4] = "710234797",
[5] = "234975680", [6] = "https://blog.csdn.net/shirln",
}
self.joinMe = {}
for i=1,6 do
self.joinMe[i] = transform:Find("joinMe/"..i):GetComponent("Text")
self.joinMe[i].text = string.format("%s:%s",title[i],name[i])
self.joinMe[i].gameObject:SetActive(false)
end
影片
接下來就是實作影片播放了
嘗試一
最開始的想法是使用for回圈來添加影片,如下:
local function playAnim(self)
for i,v in ipairs(self.joinMe) do
self.joinMe[i].gameObject.transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[i].gameObject:SetActive(true)
end)
end
end
最終的效果是,肉眼可見的同時出現,思考一下,這是為什么?是的,因為這里for回圈里是執行影片,
它不會等影片執行完再進行i+1,而是只要執行了影片播放就回i+1回圈,
嘗試二
后來我就想,要控制i的遞增,while可以實作該效果,如下:
local function playAnim(self)
local index = 1
while(index>7) do
self.joinMe[index].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[index]:SetActive(true)
index = index + 1
end)
end
end
最終的效果是,慘不忍睹的死回圈,這里原因就更簡單了,影片沒播放完,i不會遞增,
那么這時候就永遠滿足條件,那么就會造成死回圈,
嘗試三
最終,為了達到影片效果,只能采取這種笨得不能再笨得方法了:
local function playAnim(self)
self.joinMe[1].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[1]:SetActive(true)
end)
self.joinMe[2].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[2]:SetActive(true)
end)
self.joinMe[3].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[3]:SetActive(true)
end)
self.joinMe[4].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[4]:SetActive(true)
end)
self.joinMe[5].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[5]:SetActive(true)
end)
self.joinMe[6].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[6]:SetActive(true)
end)
self.joinMe[7].transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[7]:SetActive(true)
end)
end
嘗試四
哎,方法三這個代碼看得我腦殼痛,不行,還是得優化一下,哦!以前不是學過遞回方法嗎,也許可以呢,嘗試一下:
local function JoinMeAnim(self,index)
self.joinMe[index].gameObject.transform:DOScale(1, 1):SetDelay(0):OnComplete(
function()
self.joinMe[index].gameObject:SetActive(true)
index = index + 1
JoinMeAnim(self,index)
end)
嘿,居然可以了,小姐姐牛逼!!!此時內心突然開始為自己鼓掌了,
效果

說明
DOScale(引數1,引數2):引數2是該影片播放的時長:即,此影片從開始播放到下影片開始播放的時長,
SetDelay(引數):引數代表該影片延遲多長時間播放
通過說明可知,可以通過某些引數值來控制影片時長,例如,上述代碼影片播放過慢,我們可以通過調節上述引數達到下面效果,

總結
通過對以上四種方法的嘗試加分析,得出的結論是:
不可以采用:方法1,方法2
可以采用:方法3,方法4
推薦采用:方法4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/266744.html
標籤:其他
上一篇:礦大課表ics檔案生成小工具
