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