无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

unity:使協(xié)程不受幀率干擾的影響

2023-09-02 16:07 作者:钅離_LX  | 我要投稿

(個人記錄,記得很隨便)

提出問題

這是一個unity的協(xié)程方法,可以物體從小到大平滑過渡縮放

很簡單的,小學二年級都可以寫出來

 ? ?private IEnumerator Scale(float speed)
 ? ?{
 ? ? ? ?transform.localScale = Vector3.zero;
 ? ? ? ?while (localScale.magnitude - transform.localScale.magnitude > 0.01f)
 ? ? ? ?{
 ? ? ? ? ? ?float y = Mathf.SmoothStep(transform.localScale.y, localScale.y, Time.fixedDeltaTime * speed);
 ? ? ? ? ? ?transform.localScale = new Vector3(localScale.x, y, localScale.z);
 ? ? ? ? ? ?yield return 0;
 ? ? ? ?}
 ? ?}

實操發(fā)現(xiàn),這個協(xié)程會受到游戲幀率的影響

我嘗試修復,接連嘗試了deltaTime、fixedTime、unscaledTime、fixedUnscaledTime都無濟于事(修了一上午)

解決問題

后面,我與ChatGPT想到了一個絕妙的方法:

可以考慮使用實際時間(例如使用Time.time)進行縮放過渡,而不是依賴于幀率?。?/strong>

這是最終的代碼,效果非常好:

 ? ?private IEnumerator Scale(float speed)
 ? ?{
 ? ? ? ?transform.localScale = Vector3.zero;
 ? ? ? ?float startTime = Time.time;
 ? ? ? ?float duration = (localScale.magnitude - transform.localScale.magnitude) / speed;

 ? ? ? ?while (Time.time - startTime < duration)
 ? ? ? ?{
 ? ? ? ? ? ?float t = (Time.time - startTime) / duration;
 ? ? ? ? ? ?float y = Mathf.SmoothStep(0f, localScale.y, t);
 ? ? ? ? ? ?transform.localScale = new Vector3(localScale.x, y, localScale.z);
 ? ? ? ? ? ?yield return null;
 ? ? ? ?}

 ? ? ? ?transform.localScale = localScale;
 ? ?}


unity:使協(xié)程不受幀率干擾的影響的評論 (共 條)

分享到微博請遵守國家法律
陇川县| 乐陵市| 麻栗坡县| 五台县| 云浮市| 平乡县| 肥乡县| 昌黎县| 内乡县| 隆回县| 思南县| 通江县| 潮州市| 禹州市| 延津县| 宜良县| 玉林市| 扶沟县| 龙游县| 广元市| 镇平县| 肇州县| 石楼县| 韶关市| 开平市| 务川| 曲麻莱县| 诸暨市| 甘洛县| 滨海县| 天门市| 德保县| 临汾市| 彭州市| 巴中市| 宜兴市| 嘉荫县| 墨江| 永仁县| 治县。| 建德市|