本帖最后由 哭唧唧的细狗 于 2023-10-29 19:16 编辑
使用动态生成主要是几种情况
1.开始场景里不需要有,达成了特定条件才会出现的内容(比如说触发了特定机关才出现的场景)
2.场景内容过多,需要通过动态创建来切分场景,使得无论是加载场景速度,或者是场景渲染性能都有提高
大场景怎么使用动态生成场景
分割场景为小的单元,制作为预制体
(图1 多个场景,多个玩法)
如图1,比如游戏中设计了多个玩法或多个场景,我们可以将多个场景拆分制作成预制体
(图2 将单个玩法或场景制作成预制体)
然后我们把其它制作成预制体的场景从对象管理器中删除 只保留玩家初始进入场景,这样游戏加载速度会快很多
(图3 只保留初始停留场景)
在代码逻辑中加载其它部分场景
// 服务器的代码中
// 初始化一个Transform
let trans = new Transform()
// 设置它到对应的位置,这里的位置信息是随意填的
trans.position = new Vector(100,100,100)
// 设置它到合适的旋转信息,这里的旋转信息是随意填的
trans.rotation = new Rotation(100,100,100)
// 通过asyncSpawn接口创建guid为xxx的预制体
// 将前边的trans信息赋值给transform
// 开启同步replicates为true
GameObject.asyncSpawn("xxx", {transform: trans, replicates: true}).then(go=>{
// 继续后边的其它逻辑
})
上边代码中的asyncSpawn中的guid可以参考图4的方式,在工程内容中找到预制体,并右键点击选中复制工程内容ID
(图4 获取想要的预制体guid)
代码里提到的transform设置,是为了将创建出来的对象放在正确的位置上,我们能通过它调整位置,转向,缩放信息
(图5 transform拥有的三个重要参数)
最小demo效果:
|