返回

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:

  1. Initialize – 帶入GCP 的 BucketName 和 Json的路徑

  2. UploadObject – 上傳本地檔案的Function

  3. 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元件:

  1. Dropdown – 可以切換本地上傳 / URL上傳

  2. Local File InputField – 要上傳的文件路徑

  3. Remote File Input Field – GCP Cloud Storage 上的儲存路徑名字

  4. 上傳按鈕

  5. 上傳進度顯示文字

b. 新增一個Cloud Storage View 的Mono Behavior 代碼:

記得一開始要初始化CloudStorage的函數,把BucketName和Json路徑帶進去

c. 按鈕點擊的時候呼叫CloudStorage的UploadObject即可

簡單乾淨!

接著打開你的Scene,在Streaming Asset放一些測試圖片,上傳測試看看即可。

上傳成功之後,可以去GCP Bucket上刷新看看有沒有出現。


CloudStorageView代碼:
using System.IO;
using UnityEngine;
using UnityEngine.UI;

namespace YFrame.API.Google.CloudStorage.Scene
{
    public class CloudStorageView : MonoBehaviour
    {
        public string bucketName = "your-bucket-name";
        public string jsonKeyFilePath = "path-to-your-service-account-json-key-file";

        [Header("File Upload UI")] 
        public Dropdown UploadTypeDropdown; 
        public Button UploadBtn;
        public Text UploadProgressText;
        public InputField FileInputField;
        public InputField RemoteFileNameInputField;


        private ICloudStorage CloudStorage = new CStorageImp();

        private void Start()
        {
            CloudStorage.Initialize(bucketName,  Path.Combine(Application.streamingAssetsPath, jsonKeyFilePath));
            UploadBtn.onClick.AddListener(UploadBtnOnClick);
        }

        private void UploadBtnOnClick()
        {
            switch (UploadTypeDropdown.value)
            {
                // Streaming Local File
                case 0:
                {
                    var filePath = Path.Combine(Application.streamingAssetsPath, FileInputField.text);
                    CloudStorage.UploadObject(filePath, RemoteFileNameInputField.text, UpdateProgressText);
                    return;
                }
                // Upload By URL
                case 1:
                {
                    CloudStorage.UploadObjectByUrl(FileInputField.text, RemoteFileNameInputField.text, UpdateProgressText);
                    break;
                }
            }
        }

        private void UpdateProgressText(double progress)
        {
            UploadProgressText.text = $"Upload Progress: {progress:F2}";
        }
    }
}


效果展示


完成的Unity Package包下載:

GoogleCloudStorage下載

第一步: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:

  1. Initialize – 帶入GCP 的 BucketName 和 Json的路徑

  2. UploadObject – 上傳本地檔案的Function

  3. 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元件:

  1. Dropdown – 可以切換本地上傳 / URL上傳

  2. Local File InputField – 要上傳的文件路徑

  3. Remote File Input Field – GCP Cloud Storage 上的儲存路徑名字

  4. 上傳按鈕

  5. 上傳進度顯示文字

b. 新增一個Cloud Storage View 的Mono Behavior 代碼:

記得一開始要初始化CloudStorage的函數,把BucketName和Json路徑帶進去

c. 按鈕點擊的時候呼叫CloudStorage的UploadObject即可

簡單乾淨!

接著打開你的Scene,在Streaming Asset放一些測試圖片,上傳測試看看即可。

上傳成功之後,可以去GCP Bucket上刷新看看有沒有出現。


CloudStorageView代碼:
using System.IO;
using UnityEngine;
using UnityEngine.UI;

namespace YFrame.API.Google.CloudStorage.Scene
{
    public class CloudStorageView : MonoBehaviour
    {
        public string bucketName = "your-bucket-name";
        public string jsonKeyFilePath = "path-to-your-service-account-json-key-file";

        [Header("File Upload UI")] 
        public Dropdown UploadTypeDropdown; 
        public Button UploadBtn;
        public Text UploadProgressText;
        public InputField FileInputField;
        public InputField RemoteFileNameInputField;


        private ICloudStorage CloudStorage = new CStorageImp();

        private void Start()
        {
            CloudStorage.Initialize(bucketName,  Path.Combine(Application.streamingAssetsPath, jsonKeyFilePath));
            UploadBtn.onClick.AddListener(UploadBtnOnClick);
        }

        private void UploadBtnOnClick()
        {
            switch (UploadTypeDropdown.value)
            {
                // Streaming Local File
                case 0:
                {
                    var filePath = Path.Combine(Application.streamingAssetsPath, FileInputField.text);
                    CloudStorage.UploadObject(filePath, RemoteFileNameInputField.text, UpdateProgressText);
                    return;
                }
                // Upload By URL
                case 1:
                {
                    CloudStorage.UploadObjectByUrl(FileInputField.text, RemoteFileNameInputField.text, UpdateProgressText);
                    break;
                }
            }
        }

        private void UpdateProgressText(double progress)
        {
            UploadProgressText.text = $"Upload Progress: {progress:F2}";
        }
    }
}


效果展示


完成的Unity Package包下載:

GoogleCloudStorage下載

第一步: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:

  1. Initialize – 帶入GCP 的 BucketName 和 Json的路徑

  2. UploadObject – 上傳本地檔案的Function

  3. 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元件:

  1. Dropdown – 可以切換本地上傳 / URL上傳

  2. Local File InputField – 要上傳的文件路徑

  3. Remote File Input Field – GCP Cloud Storage 上的儲存路徑名字

  4. 上傳按鈕

  5. 上傳進度顯示文字

b. 新增一個Cloud Storage View 的Mono Behavior 代碼:

記得一開始要初始化CloudStorage的函數,把BucketName和Json路徑帶進去

c. 按鈕點擊的時候呼叫CloudStorage的UploadObject即可

簡單乾淨!

接著打開你的Scene,在Streaming Asset放一些測試圖片,上傳測試看看即可。

上傳成功之後,可以去GCP Bucket上刷新看看有沒有出現。


CloudStorageView代碼:
using System.IO;
using UnityEngine;
using UnityEngine.UI;

namespace YFrame.API.Google.CloudStorage.Scene
{
    public class CloudStorageView : MonoBehaviour
    {
        public string bucketName = "your-bucket-name";
        public string jsonKeyFilePath = "path-to-your-service-account-json-key-file";

        [Header("File Upload UI")] 
        public Dropdown UploadTypeDropdown; 
        public Button UploadBtn;
        public Text UploadProgressText;
        public InputField FileInputField;
        public InputField RemoteFileNameInputField;


        private ICloudStorage CloudStorage = new CStorageImp();

        private void Start()
        {
            CloudStorage.Initialize(bucketName,  Path.Combine(Application.streamingAssetsPath, jsonKeyFilePath));
            UploadBtn.onClick.AddListener(UploadBtnOnClick);
        }

        private void UploadBtnOnClick()
        {
            switch (UploadTypeDropdown.value)
            {
                // Streaming Local File
                case 0:
                {
                    var filePath = Path.Combine(Application.streamingAssetsPath, FileInputField.text);
                    CloudStorage.UploadObject(filePath, RemoteFileNameInputField.text, UpdateProgressText);
                    return;
                }
                // Upload By URL
                case 1:
                {
                    CloudStorage.UploadObjectByUrl(FileInputField.text, RemoteFileNameInputField.text, UpdateProgressText);
                    break;
                }
            }
        }

        private void UpdateProgressText(double progress)
        {
            UploadProgressText.text = $"Upload Progress: {progress:F2}";
        }
    }
}


效果展示


完成的Unity Package包下載:

GoogleCloudStorage下載

第一步: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:

  1. Initialize – 帶入GCP 的 BucketName 和 Json的路徑

  2. UploadObject – 上傳本地檔案的Function

  3. 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元件:

  1. Dropdown – 可以切換本地上傳 / URL上傳

  2. Local File InputField – 要上傳的文件路徑

  3. Remote File Input Field – GCP Cloud Storage 上的儲存路徑名字

  4. 上傳按鈕

  5. 上傳進度顯示文字

b. 新增一個Cloud Storage View 的Mono Behavior 代碼:

記得一開始要初始化CloudStorage的函數,把BucketName和Json路徑帶進去

c. 按鈕點擊的時候呼叫CloudStorage的UploadObject即可

簡單乾淨!

接著打開你的Scene,在Streaming Asset放一些測試圖片,上傳測試看看即可。

上傳成功之後,可以去GCP Bucket上刷新看看有沒有出現。


CloudStorageView代碼:
using System.IO;
using UnityEngine;
using UnityEngine.UI;

namespace YFrame.API.Google.CloudStorage.Scene
{
    public class CloudStorageView : MonoBehaviour
    {
        public string bucketName = "your-bucket-name";
        public string jsonKeyFilePath = "path-to-your-service-account-json-key-file";

        [Header("File Upload UI")] 
        public Dropdown UploadTypeDropdown; 
        public Button UploadBtn;
        public Text UploadProgressText;
        public InputField FileInputField;
        public InputField RemoteFileNameInputField;


        private ICloudStorage CloudStorage = new CStorageImp();

        private void Start()
        {
            CloudStorage.Initialize(bucketName,  Path.Combine(Application.streamingAssetsPath, jsonKeyFilePath));
            UploadBtn.onClick.AddListener(UploadBtnOnClick);
        }

        private void UploadBtnOnClick()
        {
            switch (UploadTypeDropdown.value)
            {
                // Streaming Local File
                case 0:
                {
                    var filePath = Path.Combine(Application.streamingAssetsPath, FileInputField.text);
                    CloudStorage.UploadObject(filePath, RemoteFileNameInputField.text, UpdateProgressText);
                    return;
                }
                // Upload By URL
                case 1:
                {
                    CloudStorage.UploadObjectByUrl(FileInputField.text, RemoteFileNameInputField.text, UpdateProgressText);
                    break;
                }
            }
        }

        private void UpdateProgressText(double progress)
        {
            UploadProgressText.text = $"Upload Progress: {progress:F2}";
        }
    }
}


效果展示


完成的Unity Package包下載:

GoogleCloudStorage下載

第一步: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:

  1. Initialize – 帶入GCP 的 BucketName 和 Json的路徑

  2. UploadObject – 上傳本地檔案的Function

  3. 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元件:

  1. Dropdown – 可以切換本地上傳 / URL上傳

  2. Local File InputField – 要上傳的文件路徑

  3. Remote File Input Field – GCP Cloud Storage 上的儲存路徑名字

  4. 上傳按鈕

  5. 上傳進度顯示文字

b. 新增一個Cloud Storage View 的Mono Behavior 代碼:

記得一開始要初始化CloudStorage的函數,把BucketName和Json路徑帶進去

c. 按鈕點擊的時候呼叫CloudStorage的UploadObject即可

簡單乾淨!

接著打開你的Scene,在Streaming Asset放一些測試圖片,上傳測試看看即可。

上傳成功之後,可以去GCP Bucket上刷新看看有沒有出現。


CloudStorageView代碼:
using System.IO;
using UnityEngine;
using UnityEngine.UI;

namespace YFrame.API.Google.CloudStorage.Scene
{
    public class CloudStorageView : MonoBehaviour
    {
        public string bucketName = "your-bucket-name";
        public string jsonKeyFilePath = "path-to-your-service-account-json-key-file";

        [Header("File Upload UI")] 
        public Dropdown UploadTypeDropdown; 
        public Button UploadBtn;
        public Text UploadProgressText;
        public InputField FileInputField;
        public InputField RemoteFileNameInputField;


        private ICloudStorage CloudStorage = new CStorageImp();

        private void Start()
        {
            CloudStorage.Initialize(bucketName,  Path.Combine(Application.streamingAssetsPath, jsonKeyFilePath));
            UploadBtn.onClick.AddListener(UploadBtnOnClick);
        }

        private void UploadBtnOnClick()
        {
            switch (UploadTypeDropdown.value)
            {
                // Streaming Local File
                case 0:
                {
                    var filePath = Path.Combine(Application.streamingAssetsPath, FileInputField.text);
                    CloudStorage.UploadObject(filePath, RemoteFileNameInputField.text, UpdateProgressText);
                    return;
                }
                // Upload By URL
                case 1:
                {
                    CloudStorage.UploadObjectByUrl(FileInputField.text, RemoteFileNameInputField.text, UpdateProgressText);
                    break;
                }
            }
        }

        private void UpdateProgressText(double progress)
        {
            UploadProgressText.text = $"Upload Progress: {progress:F2}";
        }
    }
}


效果展示


完成的Unity Package包下載:

GoogleCloudStorage下載