独立游戏开发(四)-- 安装python环境及配置打表工具

上一篇主要实现了实现操作杆控制player的旋转,本来今天想实现主角的移动加边界值处理的。

但有个问题,就是不论边界值还是移动的相关的参数(速度,加速度)都要保存一个地方,嗯,就是表,后面道具和enemy都需要用到表。

所以今天的主要工作就是来实现导表工具来导出asset。

我们这个游戏用到的表不会太多,所以打算用scriptobject来存储表结构,测试、维护都比较方便。

**********************************************强行分隔符******************************************

导出表asset主要分2个步骤,第一步先将xlsx导出csv;

第二步将csv转成自动生成的对应的asset;

好了,先来实现第一步。如何将xls生成csv,百度一下,用到的最多的方式是python。。。

那我们也采用python,然而。。。

唔。。。

官网上最新的版本是3.9.2,那就用这个吧

安装好了

这里注意在环境变量中添加Python目录:

在命令提示框中(cmd) : 输入 

path=%path%;C:\Python39

按下 Enter。

注意: C:\Python39 是Python的安装目录。

python现在安装好了,但是要想读取excel,还必须添加xlrd模块。

xlrd模块特点:xlrd是读取excel表格数据;支持 xlsx和xls 格式的excel表格

添加模块:pip3 install xlrd

查看已有模块:pip3 list

好,现在先来创建一个Global.xlsx文件,用来保存一些全局的数据比如player的处所数据。

接下来就是执行py文件了,py中的核心功能其实读excel,写入到csv。

部分代码如下:

读取excel:

xlsfile = xlrd.open_workbook(filename)
table   = xlsfile.sheet_by_index(0)    
rownum  = table.nrows     
colsnum = table.ncols

生成csv:

if not os.path.exists(path):         
   os.makedirs(path)
csvfile = open("tmp", "w", newline="")#, encoding="utf-8-sig")
writer = csv.writer(csvfile)#,lineterminator='\n')       
writer.writerows(content)           
csvfile.close()
 
if os.path.exists(os.path.join(path,filename)):     
    os.remove(os.path.join(path,filename))   
os.rename("tmp", os.path.join(path, filename))   

最终效果如图:

生成csv成功了,不容易啊。

可能会出现的问题:

1、执行py文件时,报错xlrd.birffh.xlrderror:excel xlsx file;not supported:

解决方法:降级安装xlrd

pip3 uninstall xlrd

pip3 install xlrd==1.2.0

2、python3生成出的文件每行会多一个空行:

python3里面对 str和bytes类型做了严格的区分,不像python2里面某些函数里可以混用。所以用python3来写wirterow时,打开文件不要用wb模式,只需要使用w模式,然后带上newline=‘’

 

下面就该要实现第二步的内容了,将csv转成自动生成的对应的asset。

scriptobject核心就是要有个模板,而每个表所对应的字段又是不一样的,所以就得分2步,第一步生成每个表所对应的数据结构,第二步通过对应的表结构生成对应的asset文件。

先看效果:

效果看来功能是实现了,那么具体实现我来盘一下。

首先先创建一个模板,然后解析我们的csv文件,将对应的数据填入到模板中,再通过文件读写生成cs类文件。

//This is Generate Auto By GenerateScript.cs 
using System.Collections.Generic;
using UnityEngine;


[System.Serializable]
public class {0}
{
    {1}
    {2}
}

0,1,2分别对应类名,变量名及属性,当然如果自己想要一些其他的,可自行添加

public partial class {0} : ScriptableObject
{
    [SerializeField] public List<1> Datas;
}

0,1分别代表类名及刚才定义的结构对象

var asset = ScriptableObject.CreateInstance(scriptObjectName);
生成asset文件。

 

总结:今天主要把打表工具流程给疏通了一遍。主要分2个步骤,一是生成csv,二是生成asset。后面配置表就简单多了,接下来的话,还要整个读表的流程以及player的移动。

传送门:独立游戏开发--索引

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值