跳到主要內容

精選

遊戲伺服器2025年初架設與研究part14收送封包的Json格式與Unity內建JsonUtility相關的問題(支援性)

 上次針對如何在Unity的新版TMP Text中使用中文字 而這次則是來分享一下先前有提過的 Json文字轉換 的問題 首先我們知道Unity內建的Json轉換是 JsonUtility JsonUtility 在使用上有一些限制在 算是有優點也有缺點 優點是畢竟是寫在Unity底層的, 效能 比較好 如果功能沒有問題的情況下,可以比額外安裝的Json轉換插件效能要好上不少 甚至有些插件能差兩倍以上的執行效能 不過自然也是有缺點 就是它有不少 不支援 的型別 很多時候常常讓伺服器與遊戲端的人打架的其中一個原因,伺服器表示資料明明就有送,遊戲端則是表示我沒收到(伺服器傳的Json格式轉不出來的種種問題或是可能性) 詳細可以參考Unity的官方文件 https://docs.unity3d.com/6000.1/Documentation/Manual/json-serialization.html 那我這邊也把一些重點特別拿出來講 首先我們先前在聊天訊息回傳的時候,就已經有用到基本的功能 可以先看到我們伺服器端的程式碼(Python) 如以上這語法 這是我們先前使用的方式 那這邊因為是跟先前相同的 相同的部分我就用截圖來顯示(詳細程式碼在Part11有可以複製) 可以看到我們主要回傳的結構 json.dumps({"type": "chat", "message": msg}) 這段就是把後面的內容透過Json轉換成Json字串後傳給使用者(遊戲端) 而我們Unity接收的位置是這樣寫的 ServerPacket packet = JsonUtility.FromJson<ServerPacket>(json); 這行就是我們今天 主要 想討論的地方 並且假設大家想要使用額外安裝的Json套件,也幾乎就是替換這行就能達到想要的效果 接下來我們看到ServerPacket這個class 這邊可以看到關鍵是我們的class要 可序列化 也就是說要加上 [Serializable] 那雖然說是只要加上可序列化,就能轉換 但是也是因為這樣,有很多不能被Unity內建支援的型別,則會轉換不出來 而...

遊戲伺服器2025年初架設與研究part10-Unity程式碼編輯器(Code Editor / IDE)設定or更換

 關於先前有人問到關於Unity撰寫程式碼該使用的程式碼編輯器(腳本編輯器)

那一般來說安裝的時候可以選擇安裝Visual Studio

而我們現在一般使用Unity多半會從UnityHub上直接選擇下載就好

如下圖所示(Hub畫面可能不同版本會有些微不同)


不過對應的Visual Studio版本是跟Unity本身有相關聯的

而這邊也是比較多人會有好奇的點,也就是明明安裝了較新的Visual Studio版本

但是打開新版的Unity卻還是使用了舊版的Visual Studio開啟

那這邊主要是因為Unity本身有著記憶且相通設定的功能

有些人使用的專案可能用某個版本的Visual Studio多年開發

可能上面會保存大量客製化的設置,直接強制升級Visual Studio會造成一些麻煩

所以關於安裝了新版Visual Studio卻沒有使用的問題

其實就是需要自己去選擇新版本的Visual Studio來使用

而要找到調整設定的地方,我們可以先打開任意一個Unity的專案

或是開空專案也可以

但是這邊要提醒一下,這個調整設定是全域的

也就是說即使你想要舊版Unity用舊的Visual Studio開

他也會一併給你設定成新版(當然反過來也是同理)

所以假設專案真的需要對應不同版本Unity去設置開啟的Visual Studio就會比較麻煩一點

我們從打開的Unity專案

左上角選擇Edit


接下來找到選項 Preferences




接下來從左邊選擇 External Tools
右邊就可以看到最上面有個 External Script Editor 的選項
點擊後會有下拉式選單


從這邊就可以選擇你安裝的Visual Studio版本
選好之後,打開程式碼(腳本)的時候就會自動使用對應版本的Visual Studio
例如我這邊範例是最新的Unity6.0版本會自帶安裝的Visual Studio2022
選了之後他就會用2022幫你開你的專案

當然也有不少人覺得Visual Studio2022過於笨重(開啟反應等等的速度較慢)
也可以選擇較為輕量的Visual Studio Code

其實這兩者支援性都不錯也都是免費的
這次就先分享這個切換方式,如有疑問可以再提出~


留言