站内搜索

搜索
热搜: 活动 交友 discuz

iFAction 世界需要你的想象力!

【干货】波导の小本本

 

8

主题

59

帖子

669

积分

iF村庄

Rank: 5Rank: 5

积分
669

摩点支持者内测用户

发表于 2020-6-6 19:54:54 | 显示全部楼层 |阅读模式
本帖最后由 MCCF 于 2020-6-10 20:51 编辑

零、口胡
本小本本持续更新(大概)
众所周知许多大佬都有自己的小本本,我这个蒟蒻为了跟(zhuang)风(bi)所以也自己写了一份,希望可以帮助到大家233
感觉我写的这个东西好像也并没有什么卵用orz

一、GMain
GMain是游戏的总数据处理部分。
众所周知G部分是游戏进程的数据,存储的是本次游戏进程独有的临时数据;在重开游戏或读档后也会重置。所以,当我们需要读取或设置本次游戏的数据时,通常都会在GMain中处理。
主要的GMain实例为RV.GameData,在游戏LOGO界面初始化完毕后即会被自动初始化。
但要注意,在“开始游戏”或“读取游戏”之前,GMain的大部分属性将为空,因为它是游戏过程中的数据。
1. 属性概览
GMain#actor存储一个GActor的实例,也就是说RV.GameData.actor就能访问到当前的全局GActor实例。
GMain#value为变量的数组。可以用形如RV.GameData.value[id]的方式访问到第id号变量。
如果需要指定访问变量为空时的默认值,可使用GMain#getValue(id,default)方法。另外,有时候我们希望访问一个数值变量且不接受非数值变量(返回默认值),使用GMain#getValueNum(id,default)方法。
GMain#selfSwitch为独立开关的三维数组。使用形如RV.GameData.selfSwitch[mapId][triggerId][switchId]的方式调用或设置。注意,此处的switchId在编辑器中为A到I,实际依次对应0到8。
GMain#mapId存储当前地图ID,GMain#x和GMain#y存储当前角色的逻辑坐标(以格为单位)。
GMain#dir存储当前角色的逻辑朝向。在ACT中,朝向只有0和1两个取值,表示左和右;在ARPG中,如果是四方向则从0到3依次为下、左、右、上,如有八方向则从4到7依次为左下、右下、左上、右上。
GMain#money存储当前金钱的数额。GMain#step存储当前角色走过的步数。
GMain#isGravity存储玩家角色是否拥有重力,GMain#gravityNum存储重力系数(每帧重力加速度)。
GMain#jumpNum存储跳跃高度,GMain#jumpTimes存储连跳次数。GMain#isCanPenetreate存储玩家可否穿墙。
GMain#items为当前背包物品的数组,其每个元素皆为DBagItem的实例。注意,这里的数组项目的顺序只取决于获得物品的顺序,并非根据ID排序。其中,背包物品的type从0,1,2对应物品、武器、防具。
GMain中还有关于物品的几个快捷方法。例如,RV.GameData.addItem(type,id,num)获取type类第id号物品num个;GMain#useItem(id,num,type)同理。另外,还有一个GMain#discardItem(item,num)方法用于丢去物品,这里item需要传入一个DBagItem的实例。例如,RV.GameData.items[2]获得背包中第三种物品的实例。

二、控件组
控件组是一个动态定义控件数量并独立成组的功能,它能够快捷地遍历系统数据或对象。例如,遍历背包物品,并针对每个物品生成一个按钮控件,即可使用控件组完成。
当界面给控件组传入一个可枚举的对象或数组,可视化UI会为对象或数组的每项生成一个控件,并将对应项作为参数传入控件的上下文中。这样,每个控件内部就能单独作出处理,形成可动态变化的控件组。
1. 控件部分
(1)新建一个自定义控件,并设置好名称等基础属性。
(2)在自定义控件内部拖入一些元素。注意控件的最右下角不建议超过你在第2部分"自定义控件"中的尺寸。
(3)在控件的上下文内,可以使用obj这个脚本对象,它指向这个控件对应的对象的那一项(注意不是遍历对象本身)。目前已知在"执行脚本","执行触发器指令"中的指令"脚本",以及各种"脚本指定"等位置均可用。
(4)例如,设置一个图像,其路径为脚本指定的obj.icon,或设置一个文本,为脚本指定的obj.text等。
2. 界面部分
(1)新建一个控件组,控件就选择我们刚做的那个自定义控件。
(2)在右侧栏中设置好基础图层、显示条件、坐标等设置。
(2)转到"自定义控件"选项卡。可以看到有一个“遍历对象”也就是所要传入的可枚举对象。例如,写入RV.GameData.items就会遍历背包物品,并生成对应数量的控件在控件组内。
(2)"列数"设置控件组的最大列数。例如设置列数为5,而实际有10个控件时就会正好占满两行,每行5个。
(3)"宽度”和"高度"设置每个控件的尺寸。这主要是为了确定后续控件的位置,实际上并不会裁剪控件。
(4)转回"预览尺寸"选项卡。这里有一个预览数量,注意实际上控件的数量是不确定的,这里设置只是方便预览。而"宽度”和"高度"则是设置(骚)紫色预览矩形的尺寸,对于实际使用也并无影响。

评分

参与人数 1金钱 +66 贡献 +1 收起 理由
七夕小雨 + 66 + 1 感谢知识分享

查看全部评分

10

主题

48

帖子

318

积分

iF平原

次元文明-Original Sin

Rank: 4

积分
318
发表于 2020-6-6 19:57:24 | 显示全部楼层
第一哈哈哈哈哈

10

主题

51

帖子

452

积分

iF村庄

Rank: 5Rank: 5

积分
452
发表于 2020-6-7 00:12:06 | 显示全部楼层
你会发现多了个支持

44

主题

507

帖子

4071

积分

管理员

Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22

积分
4071

iFAction官方导师

发表于 2020-6-7 02:15:38 | 显示全部楼层
干货满满
欢迎来到iFAction的大家庭,世界需要你的想象力!
下面是为你准备的各种传送门,祝你在这里玩的开心~
|下载iFAction最新版 |iFAction教学区 |iFAction提问区| 素材交流| 游戏发布区| 喝茶聊天嗑瓜子的欢乐水区|

31

主题

304

帖子

1557

积分

管理员

iFAction缔造者

Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22Rank: 22

积分
1557

iFAction学院校长

发表于 2020-6-8 21:21:51 | 显示全部楼层
纠正几个小错误
1、在“开始游戏”或“读取游戏”之前,GMain的所有属性都将为空

其实并不会为空(null),而是数据初始化

8

主题

59

帖子

669

积分

iF村庄

Rank: 5Rank: 5

积分
669

摩点支持者内测用户

 楼主| 发表于 2020-6-9 19:22:50 | 显示全部楼层
七夕小雨 发表于 2020-6-8 21:21
纠正几个小错误
1、在“开始游戏”或“读取游戏”之前,GMain的所有属性都将为空

我也没说都为null啊……我说的"空"就是指的初始化,但是初始化的数据对于实际调用是没有价值的,所以这样说
我才不会犯这种低级错误= =你知道那个左下右上部分我翻了多久默认脚本吗(逃
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们
QQ群:977585123
iFAction下载
Windows客户端
反馈
意见建议
iFAction

iFAction

京ICP备15053274号-1

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.