Skip to content

從 0.9 版本遷移至 0.10 版本

伺服器端

EntityMap<T> 已移除. 若您當前使用 EntityMap<T> 做遊戲人物的映射描述, 則現在應替換為純 TypeScript. 如將 "EntityMap<Player>" 替換為 "{[id: string]:Player}", 或遷移到新的序列化程序.

新的預設序列化程序

Colyseus0.1 版本引入了新序列化方式 (SchemaSerializer). 盡管我們推薦使用新的序列化程序, 但您仍可繼續使用舊版序列化程序 (FossilDeltaSerializer).

我想繼續使用舊版序列化程序.

沒問題,請在下方查看如何使用 TypeScript 或純 JavaScript 以繼續使用舊版序列化程序.

import { Room, FossilDeltaSerializer, serialize } from "colyseus";

@serialize(FossilDeltaSerializer)
class MyRoom extends Room {
    // your room definition
}
const colyseus = require('colyseus');

class MyRoom extends colyseus.Room {
    // your room definition
}
colyseus.serialize(colyseus.FossilDeltaSerializer)(MyRoom);

我想使用新版序列化程序.

太好了,希望您的專案不需要進行過多變更.客戶端側監聽房間動態的方式略有變更.

客戶端

colyseus-unity3d

我們強烈推薦使用新的 schema 序列化程序.查看如何基於伺服器上的定義在客戶端生成架構.

  • client.id 已重命名為 client.Id
  • room.id 已重命名為 room.Id
  • room.name 已重命名為 room.Name
  • room.sessionId 已重命名為 room.SessionId
  • room.state 已重命名為 room.State
  • e.message 已重命名為e.Message (在 MessageEventArgsErrorEventArgs 上)
  • Room<T> 需為狀態持有者提供泛型型別
    • 使用 Fossil Delta 時,它是 Room<IndexedDictionary<string, object>>
    • 使用 Schema 時,它是 Room<YourStateClass>
  • RoomUpdateEventArgs 已重命名為 StateChangeEventArgs<T>
    • 使用 Fossil Delta 時,TIndexedDictionary<string, object>
    • 使用 Schema 時,TYourStateClass.
    • e.state 已重命名為 e.State
Back to top