设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2127|回复: 9
打印 上一主题 下一主题

[已经过期] 如何获取切换到某一个场景之前的场景?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
跳转到指定楼层
1
发表于 2016-1-27 16:54:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 有丘直方 于 2016-1-27 16:58 编辑

这里我做了一个场景,在这个场景下按下B键可以返回到原来的场景。任何一个场景都可以切换到这个场景,如果在这个场景的initialize的定义中弄一堆的参数判断原来的场景并且在每一个其他的场景中都加入一个切换到这个场景的方法,那要多麻烦啊!
于是我就想要知道获取切换到这个场景之前的场景的方法。
我首先自己琢磨着想一个办法。我在Main中改,把
RGSS2 代码复制
  1. $scene.main while $scene != nil
改成
RGSS2 代码复制
  1. while $scene != nil
  2.     $scene.main
  3.     $last_scene = $scene if $scene != Scene_********.new
  4.   end
,然后在我自己做的那个场景的return_scene的方法定义成
  1. $scene = $last_scene
复制代码
,结果没有成功……
请问有没有什么办法可以做到这个?
小仙女一枚~

Lv4.逐梦者

送快递的水表员

梦石
10
星屑
4852
在线时间
3303 小时
注册时间
2012-6-27
帖子
7160

开拓者贵宾

2
发表于 2016-1-27 18:15:56 | 只看该作者
如果是我的话……我只会比较简单粗暴地弄个全局变量,然后不同场景对应不同的值,返回时判断这个值。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
3
 楼主| 发表于 2016-1-27 18:33:07 | 只看该作者
Password 发表于 2016-1-27 18:15
如果是我的话……我只会比较简单粗暴地弄个全局变量,然后不同场景对应不同的值,返回时判断这个值。 ...

虽然这个方法可行,但是和我说的第一个方法一样,它需要在每一个场景中都代入一次变量,还是比较麻烦的。
小仙女一枚~
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9414 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

4
发表于 2016-1-27 18:50:01 | 只看该作者
本帖最后由 喵呜喵5 于 2016-1-27 18:51 编辑
  1. $last_scene = []
复制代码
  1.   while $scene != nil
  2.     if $last_scene[-1] != $scene
  3.       $last_scene.push($scene)
  4.     end
  5.     $scene.main   
  6.   end
复制代码
  1. def return_scene
  2.   $last_scene.pop
  3.   $scene = $last_scene.pop
  4. end
复制代码
未测试
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
5
 楼主| 发表于 2016-1-27 19:18:24 | 只看该作者
喵呜喵5 发表于 2016-1-27 18:50
未测试

谢谢,我试一下。
小仙女一枚~
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
6
 楼主| 发表于 2016-1-27 19:39:28 | 只看该作者
喵呜喵5 发表于 2016-1-27 18:50
未测试
  1. #==============================================================================
  2. # ■ Main
  3. #------------------------------------------------------------------------------
  4. #  各定义结束后,从这里开始实际处理。
  5. #==============================================================================

  6. # 一些常用的字体
  7. Font.default_name = ["SimHei", "华文隶书", "DFKai-SB", "標楷體", "Verdana", "Arial Unicode MS"]
  8. begin
  9.   Graphics.freeze
  10.   $scene = Scene_Loading.new
  11.   $last_scene = []
  12.   while $scene != nil
  13.     if $last_scene[-1] != $scene
  14.       $last_scene.push($scene)
  15.     end
  16.     $scene.main   
  17.   end
  18.   Graphics.transition(30)
  19. rescue Errno::ENOENT
  20.   filename = $!.message.sub("你看看,这个文件是不是没有了——", "")
  21.   print("紧急!#{filename}找不到了怎么办!")
  22. end
复制代码
进入Scene_Map场景后进入调用了刚刚提到的return_scene方法的类之后发生了以下错误:
脚本 'Main' 的第 14 行发生了 NoMethodError .
undefined method '[]' for #<Scene_Map:0xa4b8a38>

请问怎么解决?
小仙女一枚~
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9414 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

7
发表于 2016-1-27 19:49:36 | 只看该作者
有丘直方 发表于 2016-1-27 19:39
进入Scene_Map场景后进入调用了刚刚提到的return_scene方法的类之后发生了以下错误:

请问怎么解决? ...

你不附上 return_scene 的定义我怎么知道怎么解决……?

评分

参与人数 1星屑 +100 收起 理由
丿梁丶小柒 + 100 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
8
 楼主| 发表于 2016-1-27 19:54:02 | 只看该作者
喵呜喵5 发表于 2016-1-27 19:49
你不附上 return_scene 的定义我怎么知道怎么解决……?

呃呃呃。
  1.   #--------------------------------------------------------------------------
  2.   # ● 回到原画面
  3.   #--------------------------------------------------------------------------
  4.   def return_scene
  5.     if @from_title
  6.       $scene = Scene_Title.new
  7.     elsif @from_end
  8.       $scene = Scene_End.new
  9.     elsif @from_gameover
  10.       $scene = Scene_Gameover.new
  11.     elsif @from_event
  12.       $scene = Scene_Map.new
  13.     else
  14.       $last_scene.pop
  15.       $scene = $last_scene.pop
  16.     end
  17.   end
复制代码
抱歉,附上了。
小仙女一枚~
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9414 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

9
发表于 2016-1-27 20:01:37 | 只看该作者
有丘直方 发表于 2016-1-27 19:54
呃呃呃。抱歉,附上了。

全局搜索一下 $last_scene ,看看还有没有别的地方定义了之后你没删干净
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
10
 楼主| 发表于 2016-1-27 20:04:59 | 只看该作者
喵呜喵5 发表于 2016-1-27 20:01
全局搜索一下 $last_scene ,看看还有没有别的地方定义了之后你没删干净

噢!在Scene_Map发现一个有关它的变量代入,是我上次试的时候弄的,没删掉。
删掉之后应该好了。谢谢提醒!
(话说一次次输入验证码真麻烦)

点评

打开关闭一次菜单,$last_scene +2,使用道具,$last_scene +2,进入战斗,$last_scene +2……  发表于 2016-1-28 19:50
不是退出游戏重新进入的时候就会刷新一次$last_scene吗,因为Main里面有这个内容而且全局变量是不会存档的。  发表于 2016-1-28 19:04
不需要时请适时清空 $last_scene = [] ,不然这个 Array 会很长很长……  发表于 2016-1-28 16:54
小仙女一枚~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 12:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表