白鹭引擎Egret Engine-实现多场景(场景串联篇)

继上一篇 白鹭引擎Egret Engine-实现多场景(EUI布局篇)
这篇开始会讲解怎么串联多场景

如果资讯有误或是有更好的资讯
非常非常欢迎各位指点与交流
Egret Engine Community TW


假设我现在游戏一打开
会显示大厅和按钮
按钮按下去会跳转到不同的画面
我们先来做这种简单的多场景

创建大厅按钮

上一篇我们只将场景加上底图
现在我们来加上按钮
哦对了这个场景就是我们的大厅

一样打开 SceneEui.exml

http://img2.58codes.com/2024/20113641BF2kRbPzZf.jpg

首先选择左边的 component (长得像拼图的东西)
再选择它里面的 component => Button
直接拖拉到工作区
这样就新增了一个EUI按钮元件了
然后在右边的 COMMON => ID 和 Label
输入按钮上显示的文字(按钮名称)

用这种方式建立两个按钮
命名为 Scene A 和 Scene B
也就是我们从大厅点选这两个按钮
会到两个不同的新场景

这样大厅的EUI布局都完成了
剩下就是写逻辑让按钮可以跳转


设定按钮逻辑

首先在 SceneEui.exml 複製元件的属性

http://img2.58codes.com/2024/20113641imsHv8cgSK.jpg

点一下这个按钮就好
接着我们打开 SceneEui.ts
直接把属性贴上

http://img2.58codes.com/2024/20113641xm4bqWVVop.jpg

接着将整个EUI类别挂上事件监听器

http://img2.58codes.com/2024/20113641DP7MZGgoLH.jpg

这行的白话文是
如果EUI元件加载成功
便触发 this.addEvent() 这个方法

http://img2.58codes.com/2024/20113641N31iYCnQM8.jpg

接着新增 addEvent() 这个方法
这个方法会帮两个按钮挂载点击的事件监听器
当点击按钮之后会触发跳转场景的方法
所以再新增 toSceneA() 和 toSceneB() 这两个方法

到这边按钮的点击功能原则上就完成了


场景的节点观念

现在场景的节点关係是
Main => SceneModel => SceneEui
如果我要新增新的画面
那这个新画面的节点应该要在哪呢?

公布答案
Main => SceneModel => SceneEui
Main => SceneModel => New Scene

没错
要挂在SceneModel下而不是SceneEui下
要把SceneModel想成大厅场景的主体
SceneEui只是皮肤而已

既然这样新增场景的时候就不能再SceneEui里面进行addChild的动作
而是要在SceneModel进行addChild


按钮触发跳转

所以我们上面新增的 toSceneA() 和 toSceneB() 这两个方法
必须移到 SceneModel 这个类别中

http://img2.58codes.com/2024/20113641uGOYC6E2W3.jpg

那这个时候你会发现 SceneEui 中的挂载按钮点击监听的地方报错
原因是因为触发的方法已经不存在于这个类别中了
新的问题就是
该怎样才能跨类别呼叫SceneModel的方法

方法是
我们回到Main.ts这个档案
修改创建场景的部分

首先新增一个 Main 类别的静态属性
public static gameHall: SceneModel;

http://img2.58codes.com/2024/20113641dZy2PQ8cCZ.jpg

接着将这个静态属性指向我们创建的大厅场景也就是SceneModel

http://img2.58codes.com/2024/20113641riPNXufz4F.jpg

这样我们就能跨类别呼叫 SceneModel 了

回到 SceneEui 修改挂载事件监听器的地方
直接呼叫 Main.gameHall 的方法

http://img2.58codes.com/2024/20113641nIkDARzz3A.jpg

这样按钮的功能就大功告成了


创建子场景 SceneA 和 SceneB

用之前讲过的方法
在src新增场景的ts档

http://img2.58codes.com/2024/20113641zg7gOOhQOD.jpg

然后新增对应的EUI元件(SceneAEui、SceneBEui)
并加载到SceneA、SceneB

http://img2.58codes.com/2024/20113641mjngpuc42N.jpg

虽然大家都很聪明
不过我还是提醒一下
虽然我只截图B的
但是A的也要做

再来进行这两个场景的EUI布局
打开exml档设定规格500x500
设定背景一黑一白
使用 EUI.Rect 这个元件
一样也是左下角直接拖拉
然后在调整规格和颜色就好

当子场景创建好后
最后一个步骤
回到 SceneModel 设定刚刚按钮触发的两个方法

http://img2.58codes.com/2024/20113641RlrjDJA0uK.jpg


这样子就完成了简单按钮跳窗的功能
如果熟悉这些操作后
也可以去尝试看看怎么新增返回键

提示
千万要注意节点之间的关係

下一篇会来讲解场景新增与移除的概念

收操 http://img2.58codes.com/2024/emoticon29.gif

下一篇
白鹭引擎Egret Engine-单例的重要性


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章