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

Project1

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

[已经解决] (已解决)如何在事件中变更游戏窗口大小

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3372
在线时间
1123 小时
注册时间
2015-12-24
帖子
246
跳转到指定楼层
1
发表于 2016-10-26 14:03:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 翠靈月 于 2016-10-26 16:06 编辑

在论坛搜索了一下大部分都是窗口变大画面跟着放大的
不过我需要的不是放大画面,而是只有窗口大小改变(例如原本是400x400,触发事件变成500x500)
有人说用Graphics.resize_screen(xxx,xxx)
但是在事件脚本中使用后,窗口一旦放大,多出来的部分就会变成黑边(如附图),需要按F12回标题画面(刷新画面?)才能读出黑边的画面
该如何改善这个问题呢?或者有没有其他方法能够实现

未命名.png (323.57 KB, 下载次数: 18)

未命名.png

Lv4.逐梦者 (版主)

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

2
发表于 2016-10-26 14:39:48 | 只看该作者
这个问题是因为Spriteset_Map和各窗口创建的时候已经套用了原本Graphics的大小。解决的办法:

使用此事件脚本指令:
RUBY 代码复制
  1. w = Graphics.width; h = Graphics.height
  2. nw = 544; nh = 416
  3. Graphics.resize_screen(nw,nh)
  4. SceneManager.scene.dispose_spriteset
  5. SceneManager.scene.create_spriteset
  6. SceneManager.scene.dispose_all_windows
  7. SceneManager.scene.create_all_windows
  8. dw = w / 32 * nw
  9. dh = h / 32 * nh
  10. $game_map.set_display_pos(dw,dh)


将544和416更改成你想要的分辨率。

另外我建议在使用此脚本之前使用淡出画面,之后则使用淡出画面,呈现效果可能会比较好。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3372
在线时间
1123 小时
注册时间
2015-12-24
帖子
246
3
 楼主| 发表于 2016-10-26 14:59:54 | 只看该作者
RaidenInfinity 发表于 2016-10-26 14:39
这个问题是因为Spriteset_Map和各窗口创建的时候已经套用了原本Graphics的大小。解决的办法:

使用此事件 ...

非常感谢!
不过有个问题,就是画面放大后画面会偏离主角的所在位置(或者该说主角不在画面中心)
用场景移动虽然可以找回主角的位置,但在移动前还是会先闪现偏移的画面(即使在脚本执行前执行淡出画面也是)
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

4
发表于 2016-10-26 15:06:44 | 只看该作者
估计你选择的分辨率不是32的倍数
实际上,如果你的分辨率不是32的倍数,就算你是在游戏开始时就套用这个倍率,你也会发现地图移动会产生偏移(尤其是走到边沿的时候)。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3372
在线时间
1123 小时
注册时间
2015-12-24
帖子
246
5
 楼主| 发表于 2016-10-26 15:13:03 | 只看该作者
本帖最后由 翠靈月 于 2016-10-26 15:34 编辑
RaidenInfinity 发表于 2016-10-26 15:06
估计你选择的分辨率不是32的倍数。
实际上,如果你的分辨率不是32的倍数,就算你是在游戏开始时就套用这个 ...


好像不是倍率的问题,因为我main订320*160+事件设640*320,画面也会偏移到最右下角
不过修改一下最后一句的座标位置应该就行了
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
6891
在线时间
7027 小时
注册时间
2013-11-2
帖子
1344

开拓者剧作品鉴家

6
发表于 2016-10-26 15:56:08 | 只看该作者
本帖最后由 RaidenInfinity 于 2016-10-26 15:57 编辑

因为代码比较长所以事件指令装不下了。

在脚本编辑器插入这个脚本:
RUBY 代码复制
  1. module SceneManager
  2.  
  3.   def self.resize_screen(nw,nh)
  4.     w = Graphics.width
  5.     h = Graphics.height
  6.     Graphics.resize_screen(nw,nh)
  7.     scene.dispose_spriteset
  8.     scene.create_spriteset
  9.     scene.dispose_all_windows
  10.     scene.create_all_windows
  11.     px = $game_player.real_x
  12.     py = $game_player.real_y
  13.     cx = $game_map.screen_tile_x / 2
  14.     cy = $game_map.screen_tile_y / 2
  15.     if px < cx || px + cx > $game_map.width
  16.       dx = 0
  17.     else
  18.       dx = px - cx
  19.     end
  20.     if py < cy || py + cy > $game_map.height
  21.       dy = 0
  22.     else
  23.       dy = py - cy
  24.     end   
  25.     $game_map.set_display_pos(dx,dy)
  26.   end
  27.  
  28. end


然后在事件脚本指令调用:
RUBY 代码复制
  1. SceneManager.resize_screen(长,宽)

点评

可以了!再次感谢  发表于 2016-10-26 16:04

评分

参与人数 1星屑 +250 梦石 +1 收起 理由
怪蜀黍 + 250 + 1 楼主认可的解答

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-21 07:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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