微信小游戏制作工具中,如何跨场景进行交互

简介: 微信小游戏制作工具中,如何跨场景进行交互

嗨!大家好,我是小蚂蚁。


在讲游戏场景的时候,我通常会使用这样的类比:把游戏比作一个房子,场景就是房子里的房间,通常一个房子里有多个房间,而且每个房间都互相连通,可以从一个房间进入到另一个房间。对应的就是可以从游戏中的一个场景进入到另一个场景。


两个场景之间是可以互通的,比如说你可以从“场景1”进入到“场景2”,也可以从“场景2”进入到“场景1”。但是不同场景里的精灵和逻辑是不能够直接交互的。这也是很多同学在面对多场景时,经常遇到的困惑。为什么无法在一个场景里设置另一场景里的精灵呢?为什么给另一个场景中的精灵发送通知时,接收不到呢?


下面,让我们先来看一下这两个经常会遇到的问题。


跨场景设置精灵报错

如图,我们创建两个场景,在场景2中放置了一个“基础文字”。

接着,我们在场景1中,使用积木修改场景2中的“基础文字”。

预览场景,你会发现提示了一个错误信息。

对应的修改场景2中的“基础文字”的积木块会高亮显示。

当你在一个场景中使用积木设置另一个场景的文字,数字,精灵等操作时,就会出现这种错误。因为每个场景的精灵只能够在自己所在的场景中设置。


现在积木块点击下拉时,会显示所有场景中的可设置的精灵,比如说,点击基础文字设置积木的下拉,会显示所有场景中的基础文字。如果工具在这里能增加一个限制,即只显示当前场景中的基础文字,那这个错误就能够在工具的层面上完全解决了。期待小游戏制作工具日后的改进升级。


跨场景发送通知无效

如图,我们在场景2的“基础文字”上增加了一个通知的处理,当它收到“修改文字”的通知时,修改一下自己的文字内容。

接着,我们在场景1中给场景2的“基础文字”发送一个“修改文字”的通知,然后将场景切换到场景2。

预览一下:

场景2中的基础文字并没有改变。这证明我们在场景1中向场景2发送的通知并没有生效,而且也没有给出明显的错误提示。


当你在一个场景中向另一个场景中的精灵发送通知时,会遇到这种没有明显提示的问题,通知只有在发送给当前场景中的精灵时才会有效。


跨场景交互


我们既不能去设置其它场景的精灵,又不能向其它的场景发送通知,那两个场景之间想要交互的话如何做呢?答案就是“全局变量”。

如图,全局变量是一个公共区域,每个场景都可以读取和设置全局变量。两个场景之间可以借助全局变量来进行互动。举个例子,假设现在有一个全局变量 a,它的值是 0,当前在场景1中,我们把这个 a 的值设置成 1,接着切换到场景2中,此时场景2获取到的 a 的值就是 1 了。


全局变量相当于一个中介的角色,可以在一个场景中记录某个值,然后在另一个场景中把这个值拿出来用。


接下来,我们以一个小示例来演示一下,如何使用全局变量来进行两个场景间的交互。


我们制作一个游戏中常用的选角色的示例,在选人场景(场景1)中玩家选择一个角色,然后进入游戏场景(场景2)后,会使用玩家选择的这个角色进行游戏。

首先,来看一下选择角色场景。

如图,场景1是角色选择场景,在这里玩家可以选择角色,选择的角色使用红色放大作为提示,点击“开始游戏”按钮,会进入游戏场景。


创建一个“当前角色”的全局变量,以及一个“刷新角色”的通知。

接着,看一下小Y上的积木逻辑。

点击小Y时,设置全局变量“当前角色”的数值为 1,然后向所有的角色发送“刷新角色”的通知。通知中的处理是根据“当前角色”变量的值,设置当前的角色是否要红色放大显示。

再来看一下小怪兽上的积木逻辑。

逻辑都差不多,唯一的区别就是,选择小怪兽时,“当前角色”的数值设置为 2。

最后,在来看一下场景2中的积木逻辑。

逻辑很简单,当场景启动后,根据变量“当前角色”的值显示游戏的角色。“当前角色”的值为 1 的时候,显示小Y,为 2 的时候,显示小怪兽。

预览一下看看结果。

最后,总结一下。

跨场景交互经常会遇到两个问题:

  • 在一个场景中设置另一个场景中的文字,数字,精灵等,会报错。
  • 在一个场景中向另一个场景中的精灵发送通知时,不会报错,但是通知无效。

对于这两个问题,只需要记住一点:不论是对精灵进行设置,还是给精灵发送通知,只有在同一场景下才有效,跨场景无效

跨场景交互的解决方法是利用“全局变量”,它是游戏这座房子里的一块公共区域,是一个中介。每个场景都可以与它交互,利用它我们就可以实现多个场景间的信息传递了。

相关文章
|
5天前
|
Docker 容器
Star 1.8k! 推荐一款更优雅的微信文章订阅工具,让阅读更便捷!
Star 1.8k! 推荐一款更优雅的微信文章订阅工具,让阅读更便捷!
|
5天前
|
前端开发 开发者
【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
35 0
|
5天前
|
小程序 开发者
关于UniApp启动到微信小程序工具提示找不到app.json
关于UniApp启动到微信小程序工具提示找不到app.json
112 0
|
5天前
|
小程序 开发工具 开发者
解决微信开发者工具不能使用云开发的资源
解决微信开发者工具不能使用云开发的资源
|
5天前
|
小程序 Java 编译器
性能工具之JMeter 微信小程序 WebSocket 脚本入门
【5月更文挑战第12天】性能工具之JMeter 微信小程序 WebSocket 脚本入门
9 1
|
5天前
|
小程序 开发者
【微信小程序】微信开发者工具 app.json: [“subpackages“][0][“root“] 字段需为目录 已解决
【微信小程序】微信开发者工具 app.json: [“subpackages“][0][“root“] 字段需为目录 已解决
15 0
|
5天前
|
小程序 开发工具 开发者
【微信小程序】微信开发者工具 引用 vant-weapp时“miniprogram/node_modules/@babel/runtime/index.js: 未找到npm包入口文件” 解决办法
【微信小程序】微信开发者工具 引用 vant-weapp时“miniprogram/node_modules/@babel/runtime/index.js: 未找到npm包入口文件” 解决办法
35 1
|
5天前
|
小程序 开发者 Windows
【微信小程序】微信开发者工具 内容错误 pages/cart/cart.json: [“usingComonent“][“van-card“]: “@vant/weapp/card/indx“ 未找到
【微信小程序】微信开发者工具 内容错误 pages/cart/cart.json: [“usingComonent“][“van-card“]: “@vant/weapp/card/indx“ 未找到
27 0
|
5天前
|
小程序 JavaScript 前端开发
【微信小程序】--WXML & WXSS & JS 逻辑交互介绍(四)
【微信小程序】--WXML & WXSS & JS 逻辑交互介绍(四)
|
5天前
|
开发者
微信开发者工具真机调试连接状态在正常和未连接之间反复横跳
微信开发者工具真机调试连接状态在正常和未连接之间反复横跳
44 1

热门文章

最新文章