截圖 2023-08-24 下午12.55.19

今天在build apk的時候,build到後面跳出

出錯訊息

* What went wrong: Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory(). > Could not create service of type FileHasher using .createFileHasher(). * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org

到底是出什麼問題呢

解决方法

Kouhei 發表在 痞客邦 留言(0) 人氣()

ezgif.com-crop

1. GestureLine與GestureData類別

這些類別將用於存儲手寫的軌跡點和數據。

[System.Serializable]
public class GestureLine {
public List<Vector2> points = new List<Vector2>();

Kouhei 發表在 痞客邦 留言(0) 人氣()

截圖 2023-06-30 上午10.36.00

這次的IOS專案在xcode要上架app時候,出現了error,如下圖:

結果發現了網路上很奇異的解決方式,方法如下

在 xCode 中,轉到General Tab,然後在 Target > UnityFramework > Frameworks and Libraries 中刪除 AVFoundation.framework 並使用 + 號再把AVFoundation.framework做加進去

-> 刪除再加入

最後上架

Kouhei 發表在 痞客邦 留言(0) 人氣()

截圖 2023-06-05 下午5.54.30

這次的IOS專案在xcode跑測試app時候,閃退並出現Reason:image not found的error,如下圖:

這表示在實機運行時找不到所需的framework包,而導致程式crash

解決辦法就是,缺什麼補什麼,把缺少framework就補上去

以上面error訊息為例:Library not loaded : @rpath/DTBiOSSDK.framework

那就把DTBiOSSDK.framework手動加進去,缺什麼加什麼,直到沒有錯誤為止

Kouhei 發表在 痞客邦 留言(0) 人氣()

Steering-Obstacle Avoidance – Yashas Gujjar

*這篇是以移動情況動態的迴避障礙的操控行為,不是用尋路演算法預先算出靜態的可走路徑。

如何使角色避開所有障礙到達地點呢?操控行為會用到射線的方式做迴避,先來敘述一下一般使用的操控迴避方法,會用一條射線往前打出,打到障礙物的話迴避

理念如下圖:

射線向前打出,偵測到障礙物,取得障礙物中心,以原先前進的向量前方位置(ahead)減障礙物中心就能取得迴避向量

以迴避向量與原先行走向量相加,得到迴避過後的向量

Kouhei 發表在 痞客邦 留言(0) 人氣()


這次的專案遇到了一個遊走在畫面上的3D可點擊物件,這個3D還夾在UI和UI中間,這個就會出現穿透問題與防穿透問題。

這個案例蠻特殊的,會在UI上方移動的3D物件案例不多,所以在網路的文章大部分都只寫到防止UI穿透後方3D物件,不然就是防止同一攝影機底下的UI是否被遮擋,兩者都沒有達到我完整的需求,只能想其他方法了

網路上很多都是UI防止遮蔽的後方3D物件同時被點擊,作法也蠻多種的

1.EventSystem

public void OnMouseUpAsButton()

Kouhei 發表在 痞客邦 留言(0) 人氣()

Untitled (2)

前一篇用用了觀察者模式實作事件管理器,但還是有可以改變的部分

前一篇的事件管理結構:

會發現類別會因為事件的多寡而越來越多,而多一個事件就會出現一個主題和一個以上的觀察者,而每一個事件還要去定義專屬的主題,而主題傳資訊還是以Object轉型為需要的資訊類別,多了一個轉型的動作,那有沒有方式可以修改這些問題呢?

這時候泛型就派上用場了

新版UML架構:

Kouhei 發表在 痞客邦 留言(0) 人氣()

Untitled (2)

事件管理器是什麼:

這邊用遊戲做例子,事件管理器主要就是管理玩家可能因為遊戲機制而觸發的預設事件,假設玩家死亡這件事已經被列為一個事件在事件管理器內做管理,那當玩家死亡事件觸發後,就會把死亡事件由事件管理器去通知可能播放死亡音效、顯示死亡UI、抑或是自動調整遊戲難度等等,而我們就是利用設計模式裡的觀察者模式去進行實作,不知道觀察者模式的可以點連結回去查看   觀察者模式

而今天這篇會分享以觀察者模式架構所做的事件管理器的處理方式,後面會帶到成就系統的關係

事件管理器 程式架構 UML (例)

以上例子的實作大至分類為: 

Kouhei 發表在 痞客邦 留言(0) 人氣()

17015643_6324b8dbb59b143595拷貝

很多專案在測試時都會需要測試資料,為了專案測試特別做了一個測試資料的編輯器讓企劃去填入測試參數去測試,這次用到了自定義的Reorderable List來實作

一般的Reorderable List,這裡用Inspector做範例

一般簡單的Reorderable List很直覺,就是把list參數一排一排的列出來,每一列高度也是如圖的一個參數的預設高度,預設的Header是Serialized Property,每個element的Label也都是"Element X"

using System.Collections.Generic;
using UnityEditor;

Kouhei 發表在 痞客邦 留言(0) 人氣()

截圖 2022-10-06 上午10.33.10

這次做的案子金額數字需要沒有上限,這個就不能只用一般常用的數字結構(int, float...),因為這些值的儲存範圍是有上限的,破上限或下限都會產生error,這時候就會需要C#的BigInteger的幫助

BigInteger內置在NET4.0的System.Numerics裡,他就是為了處理大數字誕生的,不過因為BigInteger是對整數做處理,我這個案子會需要有小數的運算,而金錢的小數處理上,因為float和double的精度問題會產生金額上的錯誤,不適宜做金錢的運算,decimal就是解套的方案

由於float和double都是二進制的方式儲存,因此會有精度的問題,因此就需要十進制的decimal來解決,而總括上述問題,我需要一個可以存大數的BigDecimal,在網路上我找到了兩個不錯的BigDecimal實作

Kouhei 發表在 痞客邦 留言(0) 人氣()


這次要記錄的是明明都是使用URP的Lit Shader,SRP Batcher卻無法Batch的問題。

都是坑啊~人生就是如此

Unity針對DrawCall處理有四種不同的Batch優化方式,Dynamic Batching, Static Batching, GPU Instancing和SRP Batcher

這次專案遇到SRP Batcher的問題,SRP Batcher支援URP/HDRP項目,但明明就是URP專案,檢查Frame Debuger時卻沒有出現SRP Batch,這個問題又讓我卡一段時間

SRP Batcher不能和GPU Instancing同時使用,但卻只支援GPU Instancing,讓我非常納悶

Kouhei 發表在 痞客邦 留言(0) 人氣()


這是我新的文章類型,專門來記錄我在做專案時踩的坑,這次要記錄的是DoTween的執行序列。

在這次遊戲專案裡,有錢幣或紙鈔的收到角色身上和一次性噴發,這部分我使用了DoTween來做紙鈔收入的移動和一次性噴掉。

紙鈔在移動到角色身上的這個執行中,有機率會持續取得紙鈔,所以會需要執行序列做執行控管,然後一次性噴錢又需要連正在移動的鈔票做移動任務的刪除。

首先先建出DoTween的序列 

Sequencem_Sequence=DOTween.Sequence()

Kouhei 發表在 痞客邦 留言(0) 人氣()

1 2 3
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。