本帖最后由 真紅樂章 于 2018-3-25 13:05 编辑
谢谢版主sama的提醒
话说其实一丶二丶 三那些不是其他角色而是同一角色(也是唯一角色因为设计中的游戏是单角色的说)的各种各样的纪录喔
而且原本是做成按进去显示的说
拿上一帖的原问题来说明好了
-----------------------------------
从这里 ↓
按Enter进入这里 ↓
再按Enter进入这里 ↓ 都没有问题
然後Ecs退出这里 ↓ 还是没问题
再从这里 ↓
按Enter进入这里 ↓
然後按Ecs退出 却变成这样 ↓ (光标圈着「一」而不是进入前的「三」)
所以才想问如何可以记录进入前的选项作为退出时返回的目标的说
-----------------------------------
所以小紅原本是拿状态窗口的脚本来改成想要的样子的呢
於是就变成有六个新增窗口了……
後来看着感觉弄成图鉴般立即显示会比较方便的样子
於是才在新开这帖的时候改为询问那个判断问题而把原本的问题给弃疗了喔
话说「赋值后更新」是指像道具窗口那样的吗
但是由於那六个新增窗口的绘制项目其实都各不相同的喔
对於连道具窗口脚本都看不懂的小紅来说要从零写出类似脚本恐怕不是以月份计数的学习时间内可以弄出来的说
嘛……小紅其实有试着解读道具窗口脚本的……结果……
-----------------------------------
从选单进入道具窗口应该是从class Scene_Menu这里↓进行的
def command_item SceneManager.call(Scene_Item) end
def command_item
SceneManager.call(Scene_Item)
end
然後就是进入道具场景Scene_Item
然後道具场景Scene_Item的第一部份
def start super create_help_window create_category_window create_item_window end
def start
super
create_help_window
create_category_window
create_item_window
end
def start ← 应该是说在设定一个叫做start的东西
然後方法还是类方法还是实例还是对像那些专用名词……小紅在教程里都看到蚊香眼了还是看不懂都是些甚麽……
只好先跳过……
那麽跳过名词的问题
第二行的super好像是让这个start继承他爸爸的start的说
於是Scene_Item < Scene_ItemBase的父类Scene_ItemBase里的start……
def start super create_actor_window end
def start
super
create_actor_window
end
再Scene_ItemBase < Scene_MenuBase的父类Scene_MenuBase里的start……
def start super create_background @actor = $game_party.menu_actor end
def start
super
create_background
@actor = $game_party.menu_actor
end
再Scene_MenuBase < Scene_Base的父类Scene_Base里的start……
def start create_main_viewport end
def start
create_main_viewport
end
没有再super所以应该可以从这里开始解读了…
那麽第二行调用了个create_main_viewport的东西
全局查找在同为Scene_Base的第80行
def create_main_viewport @viewport = Viewport.new @viewport.z = 200 end
def create_main_viewport
@viewport = Viewport.new
@viewport.z = 200
end
第二行@viewport = Viewport.new
加个@的记得叫实例变量
但是实例变量是甚麽……
似乎是厉害一点的变量所以在同一个实例里都能用
但是实例又是甚麽……
教程里似乎常提及实例但是没有就实例这两个字做出专门的讲解……
也或许有但是小紅看漏了吧
总之似乎加个@的东西就是在同一个class里都能用的东西的样子……吗
只好又跳过……
那麽继续= Viewport.new
.new应该就是把.前面那串字来弄一个新的
所以就是弄一个新的Viewport了
Viewport是甚麽
在脚本里找不到……
然後在F1教程里找到了
似乎是一个影响显示的东西……吗
只好又再跳过……
第三行@viewport.z = 200
@viewport在上一行已经=了Viewport.new
所以这行的@viewport.z里的.z的意思应该要从Viewport里找
然後找到z是用来显示z座标的
数字大的可以盖住数值小的
然後记得不知道从哪个教程看到过游戏事件里用来显示图片优先的编号只有到100
所以= 200应该是一个很大的数值
就是说其实上面那一大段都只是用来设定把前面的东西都显示在游戏画面的最上层
把其他东西都盖光光的说……吗
因为太多东西被跳过了所以已经不太肯定於是只好暂时把这个当作结论然後又再跳过……(蚊香眼)
然後继续上面Scene_Base里的start
由於内容只有一行所以结论应该就是相同的东西
然後再继续上面的上面Scene_MenuBase里的start
def start super create_background @actor = $game_party.menu_actor end
def start
super
create_background
@actor = $game_party.menu_actor
end
第二行super的疑似结论是显示在最上面
那麽第三行create_background
def create_background @background_sprite = Sprite.new @background_sprite.bitmap = SceneManager.background_bitmap @background_sprite.color.set(16, 16, 16, 128) end
def create_background
@background_sprite = Sprite.new
@background_sprite.bitmap = SceneManager.background_bitmap
@background_sprite.color.set(16, 16, 16, 128)
end
第二行@background_sprite = Sprite.new
一个@东西被等於了Sprite.new
Sprite ← 这个小紅知道是跟图片有关的
这样找教程就好找多了
不像刚才找个Viewport找到快要死翘翘
然後教程有看没有懂……(蚊香眼 x2)
不知道算不算跳过总之继续看第三行
@background_sprite.bitmap = SceneManager.background_bitmap
第二行的@东西的.bitmap被等於了SceneManager.background_bitmap
F1教程里的bitmap指向了内容更复杂的Bitmap……(蚊香眼 x3)
话说回来「精灵传输元位图(Bitmap)的引用。」里的「的引用」是怎麽引用来着
「引用」是甚麽呢……
小紅开始怀疑自己是不是其实不懂中文了……(蚊香眼 x4)
虽然感觉这个.bitmap是不能跳过的
不过不跳就卡住了只好又跳过……
後面是SceneManager.background_bitmap
SceneManager里面的background_bitmap有找到↓
def self.background_bitmap @background_bitmap end
def self.background_bitmap
@background_bitmap
end
内容是@background_bitmap
@background_bitmap在最上面的↓
所以一开始是空值
然後再出现是在↓
def self.snapshot_for_background @background_bitmap.dispose if @background_bitmap @background_bitmap = Graphics.snap_to_bitmap @background_bitmap.blur end
def self.snapshot_for_background
@background_bitmap.dispose if @background_bitmap
@background_bitmap = Graphics.snap_to_bitmap
@background_bitmap.blur
end
第二行有个if所以先看if後面的
@background_bitmap ← 如果是空值就.dispose
.dispose好像刚才在F1教程里的Bitmap里看到过
是释放位图来着
虽然不知道为甚麽在SceneManager里可以用Bitmap的东西
不过先当成可以用来跳过吧……(蚊香眼 x5)
那麽释放位图是甚麽呢
其实也看不懂+1……(蚊香眼 x6)
只好都跳过当成是把@background_bitmap变成空值(因为释放了?)好了
所以第二行就是不管原本的@background_bitmap是啥都变成空值了……吗
跳过跳过都跳过……(蚊香眼 x7)
於是第三行的@background_bitmap = Graphics.snap_to_bitmap
各种跳过之後似乎空值了的@background_bitmap被等於Graphics.snap_to_bitmap
F1教程里直接找到Graphics.snap_to_bitmap
就是指当前游戏画面变成图片来用
所以第三行就是说@background_bitmap被等於当前游戏画面了
第四行@background_bitmap.blur
.blur是啥来着……
在不知道为甚麽可以用的Bitmap里找到
是模糊的说
所以第四行就是把第三行的@background_bitmap给模糊了
所以第二丶三丶四行加在一起
就是让一个名叫@background_bitmap的东西被等於一张图片
而那张图片就是当前游戏画面被模糊後的样子
好吧因为各种谜之跳过所以这个结论其实不太肯定
总之当成是这样然後跳过……(蚊香眼 x8)
回到上面
SceneManager的background_bitmap有了
所以来继续看Scene_MenuBase里的start里的create_background
第三行@background_sprite.bitmap = SceneManager.background_bitmap在各种跳过之後得到一张图片了
於是第四行@background_sprite.color.set(16, 16, 16, 128)
把@background_sprite那张图片给.color.set
虽然找不到.color.set来着
不过F1教程里的Color里面有个set似乎有关系
所以(16, 16, 16, 128)就是一个16度红色+16度绿色+16度蓝色然後128不透明也就是说半透明的东西了吧
其实上面那一行因为有background这个字都知道大概是在指背景了
所以虽然不能准确找到.color.set是甚麽
不过大概就是在那张模糊了的当前游戏画面上面再加一层半透明的深灰色吧
於是create_background就是一张当前游戏画面被模糊了再加深颜色了的图片的说……吗
总之跳……(蚊香眼 x9)
於是回到上面的上面的Scene_MenuBase里的start
第四行的@actor = $game_party.menu_actor
把一个@东西给等於做一个$东西
$这个小紅知道是叫全局变量来着
$game_party是游戏里的队伍
然後$game_party = Game_Party.new
所以$game_party.menu_actor就是Game_Party里的menu_actor↓
def menu_actor $game_actors[@menu_actor_id] || members[0] end
def menu_actor
$game_actors[@menu_actor_id] || members[0]
end
於是第二行$game_actors[@menu_actor_id] || members[0]
|| ← 是或者
如果小紅没有理解错误的话就是指有前面的用前面的
没有前面的用後面的
都没有就是false
不过这里说的是游戏角色应该不会出现都没有的情况……吗(蚊香眼 x10)
总之先看$game_actors[@menu_actor_id]
$game_actors是被等於Game_Actors的
……
看了一眼class Game_Actors
里面就几句
根据上面经验
这种几句的东西就是又要找来找出结果越找越大堆的东西……
鉴於小紅感觉自己的脑袋已经在冒烟了………
这次就先解读到这里…………
有空再续……………
(蚊香眼 x………………)
|