请选择 进入手机版 | 继续访问电脑版
查看: 390|回复: 4

[原创内容] UIList和存档

[复制链接]

1

主题

8

帖子

8

积分

精华
0
在线时间
10 小时
发表于 2020-5-4 16:50:55 | 显示全部楼层 |阅读模式
本帖最后由 小污 于 2020-5-4 17:29 编辑



我们的存档列表道具列表等等便是用的UIlist来实现的,让我们结合存档的api来实现一个存档的展示。
UI列表控件:   

首先在数据库内新建一个item界面用于存放UIList的UI控件。

这边我加入了一个文本用于显示存档姓名,因为背景为黑色所以我选择了白色字体。

来到第一个界面,添加一个list控件,并把项模型绑到刚刚创建的item模型。


来到jio本界面,IDE已经为我们创建好了所需的类。


这个时候我们再创建一个类型GUI_Login,并且继承GUI_1:
  1. class GUI_Login extends GUI_1{
  2.     constructor(){
  3.         super();
  4.         this.getinfo();
  5.     }
复制代码
好了,这样this.存档即可获得父类的一个成员。
我们为什么写这个类呢?那便是来拓展这个子类。

我们根据介绍,来使用UIList绑定数据


运行一下试试看

刚刚的数据就展示出来了。

然后我们进入下一步了解一下存档。

单机游戏的存档由SinglePlayerGame类来管理。
常用有
    SinglePlayerGame.saveGame()  //用于保存数据
    参数列表:

  1. * @param index 存档位置
  2.      * @param onFin 存档完毕时回调 onFin(success:boolean)
  3.      * @param indexInfo 存档目录用的信息,可被JSON化的信息(写入至LIFE-DATA,用于在读档列表中看到一些自定义的信息,可以使用SinglePlayerGame.getSaveInfo来获取)
  4.      * @param customData 自定义数据,可以被JSON化的数据对象
  5.      *                  (上层自己添加的状态需要保存和恢复的话需要自行编写相关的逻辑,根据参数 )
  6.      * @param customGlobalData 自定义全局数据,全局数据在任何新的游戏、存档都通用的数据(比如用于储存用户的按键设置或多周目数据)
  7.      * @param fromCommand [可选] 默认值=true 是否来自事件中调用,是的话会记录一个存档保护期
  8.      *
复制代码
我们暂时用indexInfo来存一些简单的信息。

比如
  1. let index=parseInt(prompt("请输入存档索引","0"));//prompt方法用于显示可提示用户进行输入的对话框。 parseInt把字符串转为number
  2.         let name=prompt("请输入你的名字","小污");
  3.         let level=parseInt(prompt("你的等级是?","100"));
  4.         SinglePlayerGame.saveGame(index,Callback.New((success: boolean) => {
  5. console.log('okk');
  6.         }, this),{name,level},null);
复制代码

    SinglePlayerGame.getSaveInfo()  //用于获取数据
getInfo的话没有参数,但有返回值。我们看一下返回值。
  1. *       id = 存档的唯一编号,如[1,3,61] 表示存档了1号、3号、61号文件
  2.      *       now = 存档时unix时间戳
  3.      *       indexInfo = 自定义信息(比如存放地图名称,方便档案列表中玩家可以快速识别)
复制代码
里面indexinfo便是我们刚刚存的信息了。

接下来我们拿来使用。

打开CustomCommand.ts文件。这是由ide生成的命令列表。在示例中我们看到customCommand_4是一个存档命令,我们改造它。


这样我们就有了存档的能力了。
  1.    export function customCommand_4(commandPage: CommandPage, cmd: Command, trigger: CommandTrigger, triggerPlayer: ClientPlayer, playerInput: any[], cp: CustomCommandParams_4): void {
  2.         trigger.offset(1);
  3.         let index=parseInt(prompt("请输入存档索引","0"));
  4.         let name=prompt("请输入你的名字","小污");
  5.         let level=parseInt(prompt("你的等级是?","100"));
  6.         SinglePlayerGame.saveGame(index,Callback.New((success: boolean) => {
  7.             CommandPage.executeEvent(trigger);
  8.         }, this),{name,level},null);
  9.         trigger.pause = true;
  10.     }
复制代码



然后我们回到刚刚我们新建的GUI_Login.ts来做UIlist的数据绑定。
  1. class GUI_Login extends GUI_1{
  2.     constructor(){
  3.         super();
  4.         this.getinfo();
  5.         
  6.     }
  7.     getinfo(){
  8.         let datas=SinglePlayerGame.getSaveInfo();
  9.         let items=[];
  10.         for (var i=0;i<datas.length;i++){
  11.             let item:ListItem_3=new ListItem_3();
  12.             item.文本=datas[i].indexInfo.name;
  13.             items.push(item);
  14.         }
  15.         this.存档.items=items;
  16.     }
  17. }
复制代码



好了,我们试试进游戏存个档


出现啦!

如有错误的地方,希望斧正,谢谢!

本帖子中包含更多资源

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

x

30

主题

173

帖子

173

积分

GC游戏制作世界居民

精华
0
在线时间
562 小时

月散散醋虾虾

发表于 2020-5-5 12:23:55 | 显示全部楼层
研究的很深入,赞一个!
另外界面编辑器可以调背景色,以免白底白字看不清。
GameCreator世界最早的居民,基础设施搭建者。
期待有一天门庭若市,我也能够用我的技能交换到想要的游戏素材并且开坑制作心中的游戏。

1

主题

8

帖子

8

积分

精华
0
在线时间
10 小时
 楼主| 发表于 2020-5-5 13:25:18 | 显示全部楼层
黑暗之神KDS 发表于 2020-5-5 12:23
研究的很深入,赞一个!
另外界面编辑器可以调背景色,以免白底白字看不清。 ...

收到,谢谢黑大

42

主题

424

帖子

424

积分

月を见る度思い出せ!

精华
0
在线时间
808 小时

月散散醋虾虾GC2021牛年拜年庆活动奖章

发表于 2020-5-5 14:03:56 | 显示全部楼层

点评

太棒了  发表于 2020-5-5 15:07
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

上海神炎网络科技有限公司

邮箱:[email protected]

游戏创作综合交流QQ群:656319312

素材创作交流QQ群:347830194

GameCreator 云平台

沪网文[2018]8510-515号

沪ICP备18006881号

沪ICP证B2-20200653号

手机版|小黑屋|GameCreator

GMT+8, 2021-5-13 16:28 , Processed in 0.149096 second(s), 25 queries .

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