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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: kyjoke
打印 上一主题 下一主题

[有事请教] 关于如何判断文件名称

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6037
在线时间
428 小时
注册时间
2021-12-4
帖子
469
11
发表于 2024-5-11 07:46:29 | 只看该作者
505681468 发表于 2024-5-11 02:19
简单点就走原生rm读取文件,然后分析,生成配置文件,走PC存档方法保存
然后重开游戏,走原生生成data对 ...

感觉整层楼在讨论的问题都非常奇怪…既然rm运行时无法“对存档以外的目录一股脑读取完再列出所有文件名”,那不就意味着“在json文件或插件参数中提供了文件名再去加载”吗?如果是这样的话应该对这个已知的文件名做正则匹配才对啊…
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1011
在线时间
435 小时
注册时间
2012-4-8
帖子
275
12
发表于 2024-5-11 11:47:47 | 只看该作者
本帖最后由 505681468 于 2024-5-11 11:54 编辑
小秋橙 发表于 2024-5-11 07:46
感觉整层楼在讨论的问题都非常奇怪…既然rm运行时无法“对存档以外的目录一股脑读取完再列出所有文件名” ...


是的,现在这部分他已经走完了
在pc上获取目录下的文件名,正则匹配做数据解析,已经做了

他的问题是,在非PC端无法获取文件名

点评

浏览器不行,所以推荐他做数据烘焙,开发的时候脚本生成配置,部署发布的时候就有数据了。安卓可以读文件,IOS不知道,浏览器应该很少人部署吧  发表于 2024-5-11 22:42
平时没必要,只是他的插件想做这样的效果,不用用户手动配置,改为读取文件列表,脚本自动生成配置  发表于 2024-5-11 22:40
rm运行时有获取文件列表的必要么(除了存读档页面),编辑器才需要吧,楼主说了自己要获取的是立绘图片文件…pc端用ls命令可以获取,但浏览器呢?   发表于 2024-5-11 22:19
不是“不指定文件名而加载文件”,而是“代码获取指定目录下的文件列表”,RM是可以获取目录下的文件列表的,PC 走 nwjs 的 fs 和 path 就行了  发表于 2024-5-11 20:02
不不不,rm是“无法在不指定文件名的情况下加载文件”的(包括MapXxx.json)所以楼主现在应该仿照rm对于行走图文件名开头的!和$的判断一样处理啊。  发表于 2024-5-11 18:47
pokemon 和 digimon 正在路上
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1011
在线时间
435 小时
注册时间
2012-4-8
帖子
275
13
发表于 2024-5-11 11:51:31 | 只看该作者
kyjoke 发表于 2024-5-11 02:48
我最不明白的就是rm原生的读取文件了,毕竟我才用了rm几个月,所以我才想要示范的代码 ...

很短的,你就看一看代码就行了,全文搜索很快的呀

保存本地文件 rm 做了文件名拦截,只能用 id 来存游戏文件,你取消掉这部分就是自定义文件保存了
判断文件是否存在也有了 existsSync

  1. StorageManager.saveToLocalFile = function(savefileId, json) {
  2.     var data = LZString.compressToBase64(json);
  3.     var fs = require('fs');
  4.     var dirPath = this.localFileDirectoryPath();
  5.     var filePath = this.localFilePath(savefileId);
  6.     if (!fs.existsSync(dirPath)) {
  7.         fs.mkdirSync(dirPath);
  8.     }
  9.     fs.writeFileSync(filePath, data);
  10. };

  11. StorageManager.loadFromLocalFile = function(savefileId) {
  12.     var data = null;
  13.     var fs = require('fs');
  14.     var filePath = this.localFilePath(savefileId);
  15.     if (fs.existsSync(filePath)) {
  16.         data = fs.readFileSync(filePath, { encoding: 'utf8' });
  17.     }
  18.     return LZString.decompressFromBase64(data);
  19. };

  20. StorageManager.localFilePath = function(savefileId) {
  21.     var name;
  22.     if (savefileId < 0) {
  23.         name = 'config.rpgsave';
  24.     } else if (savefileId === 0) {
  25.         name = 'global.rpgsave';
  26.     } else {
  27.         name = 'file%1.rpgsave'.format(savefileId);
  28.     }
  29.     return this.localFileDirectoryPath() + name;
  30. };
复制代码

pokemon 和 digimon 正在路上
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-6-26 15:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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