如何透過Unity上傳文件, 圖片, 影片, 模型到GCP Cloud Storage,
並且取得存取網址。
第一步:GCP 事前准備
a. 註冊號GCP和填好付款資訊之後,打開Cloud Storage服務
b. 跟著引導步驟新增一個新的Bucket (可以理解成一個存放檔案的文件夾)
c. 去到權限頁面,新增一個allUsers的儲存空間檢視者用戶
d. 這裡可以快速切換要不要把這個儲存空間對外公開(我們先把它公開)
e. 你可以在這裡嘗試上傳一些文件檔案看看
f. 接下來,去打開IAM與管理的服務
g. 打開服務賬戶標籤,點擊建立服務賬戶
h. 根據指示輸入一個名字,將角色設成 Storage 管理員
i. 建立好後,點擊打開,去到金鑰頁面,新增一個金鑰,並且把Json檔案下載下來。
GCP 的初始設定到這裡就告一段落了,接下來我們去Unity實戰 !
第二步: Unity安裝GCP服務
a. 下載 Nuget For Unity
b. 下載好後,在Unity中打開,搜尋Google GCP的套件安裝
我們要安裝 Google.Apis 和 Google.Cloud.Storage.V1 的套件
c. 接下來把我們剛才下載的Json檔案放到Streaming Asset之中
做到這裡基本的環境架設就弄好了,接下來可以開始寫Code啦。
第三步: Unity 上傳文件
完整的代碼我會放在下面和提供UnityPackage,我們先來小部分拆解代碼:
a. 先寫一個ICloudStorage 的Interface
包含3個Function:
- Initialize – 帶入GCP 的 BucketName 和 Json的路徑
- UploadObject – 上傳本地檔案的Function
- UploadObjectByUrl – 直接上傳網絡URL檔案的Function
b. 寫一個CStorageImp Class繼承這個Interface:
c. 初始化StorageClient的代碼(這個是GCP內建的Class)
d. 上傳文件到GCP Cloud Storage的Function
e. 從本地文件路徑上傳就開File讀取
f. 從URL上傳的話就用WebRequest先抓一下
g. 最後把Interface的Function接好
ICloudStorage 代碼:
CStorageImp 實作代碼:
第四步: 最終調用
a. 新建一個簡單的Demo Scene場景進行測試
包含的UI元件:
- Dropdown – 可以切換本地上傳 / URL上傳
- Local File InputField – 要上傳的文件路徑
- Remote File Input Field – GCP Cloud Storage 上的儲存路徑名字
- 上傳按鈕
- 上傳進度顯示文字
b. 新增一個Cloud Storage View 的Mono Behavior 代碼:
記得一開始要初始化CloudStorage的函數,把BucketName和Json路徑帶進去
c. 按鈕點擊的時候呼叫CloudStorage的UploadObject即可
簡單乾淨!
接著打開你的Scene,在Streaming Asset放一些測試圖片,上傳測試看看即可。
上傳成功之後,可以去GCP Bucket上刷新看看有沒有出現。
CloudStorageView代碼:
效果展示
完成的Unity Package包下載:
Discussion