初學 Unity 引擎, 将 Udemy 的 Visual Scripting 課程內容以 C# 的編程方式重現
https://www.udemy.com/course/visual-scripting-with-unity/
1a. 旋轉太陽光角度
用很簡單的代碼以經過時間 * 速度的方式遞增或遞減太陽光的角度
後面的步驟用稍微複雜的代碼實現了更多的功能
1b. 控制經過時間
這裡也研究了好久...
Unity 面板的 Inspector 中的 Rotation 角度居然沒辦法直接透過代碼獲取
好像是因為 EulerAngle 只有 0 / 90(-90) /180(-180) 沒有到 360度的原因?
總之最後就是用了 26, 27 行 的 +90 +360...的方式做換算,
反覆試了幾遍完最後雖然成功但是也忘了原理是怎麼回事就是了...
1c. 添加夜間螢火蟲光效
切換至日間時要關閉粒子光效, 需先 Pause() 後才能順利執行 Clear()...
另外新版中粒子的內建方法需先用 main 宣告物件後才能調用
1d. 添加夜間照明開關
在依 Tag 獲取物件的代碼過程中, 試了好幾種方式,
最後是先用 GetComponentsInChildren<T>() 獲取所有子物件
再 foreach 遍歷篩選出含有 "LightBulb" Tag 的物件
不知為何 string 的搜尋功能內沒有 Contains() 可用?
1e. 添加日間公雞叫聲音效
同樣是在Update() 中讀取IsDay的數據再控制是否播放音效
但不知為何這個功能沒有成功..待研究
1f. 控制夜間背景透明度
發現以 DeltaTime 乘以係數進行參數的遞增, 遞減控制比 Coroutine 還方便
還不太能理解 Coroutine 的使用時機...
1g. 優化日夜切換控制
停用一開始 1a 的 DeltaTime * Speed 的太陽光旋轉功能
改以 Duration * CurrentTime 的方式做更好的控制
甚至可以加上 StartTime 起始時間的設定
完成所有代碼, 最後的步驟 1f 左上的文字內容會與 1b 步驟右上的內容同步