[开发者心得] 动态生成场景的123

[复制链接]
1069 |2
喵喵哭唧唧 发表于 2023-6-7 19:15:41 | 显示全部楼层 |阅读模式
本帖最后由 哭唧唧的细狗 于 2023-10-29 19:16 编辑

使用动态生成主要是几种情况

1.开始场景里不需要有,达成了特定条件才会出现的内容(比如说触发了特定机关才出现的场景)
2.场景内容过多,需要通过动态创建来切分场景,使得无论是加载场景速度,或者是场景渲染性能都有提高

大场景怎么使用动态生成场景
分割场景为小的单元,制作为预制体
image.png
(图1 多个场景,多个玩法)

如图1,比如游戏中设计了多个玩法或多个场景,我们可以将多个场景拆分制作成预制体

image.png
(图2 将单个玩法或场景制作成预制体)

然后我们把其它制作成预制体的场景从对象管理器中删除
只保留玩家初始进入场景,这样游戏加载速度会快很多

image.png
(图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

image.png

(图4 获取想要的预制体guid)

代码里提到的transform设置,是为了将创建出来的对象放在正确的位置上,我们能通过它调整位置,转向,缩放信息

image.png

(图5 transform拥有的三个重要参数)

最小demo效果:

回复

使用道具 举报

kk 发表于 2023-6-8 00:59:32 | 显示全部楼层
回复

使用道具 举报

吃到苦就是得到了甜 发表于 2023-6-8 21:45:10 | 显示全部楼层
学习
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表