Unity3D AI C# Scripting 學習筆記-1 (日夜場景替換)

初學 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 步驟右上的內容同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值