cocos2dx lua 一键资源管理PowerShell脚本实现
特别说明 此管理脚本不包含图片资源加密,热更新资源文件列表是md5 和 文件路径构成的txt,如下
脚本文件是放在和res src 同级的文件夹里面
脚本内容如下
clear
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$StartTime = Get-Date
$CurrentPath = (Get-Location).Path + "\d"
$CurrentPath
Write-Host "start please wait !"
### step 1 删除目标资源生成目录
if (Test-Path -Path ./d/src )
{
Remove-Item -Path ./d/src -Recurse
} ### step2 加密lua文件并放到目标目录
cocos luacompile -s ..\src -d .\d\src -e -k GD432LXCVLXXXXXX -b mahjongxxxxxxxxx --disable-compile
#3打印完成提示
Write-Host "compile and move src finish" ### step 3 移动资源文件
if (Test-Path -Path ./d/res )
{
Remove-Item -Path ./d/res -Recurse
}
Copy-Item -Path ..\res -Destination .\d -Recurse -Force
Write-Host "move res file finish" ### step 4 生成MD5文件
if (Test-Path -Path ./d/newUpdateResList1.txt )
{
Remove-Item -Path ./d/newUpdateResList1.txt -Force
}
Get-ChildItem -Path ./d -Recurse | Get-FileHash -Algorithm MD5 | ForEach-Object{ $_.Hash + " "+ (($_.Path -replace ".*\\d\\","\") -replace "\\","/") >> ./d/newUpdateResList1.txt }
Write-Host "make md5 finish" #把utf-8-bom 格式的md5文件转换成 utf-8
$Path = (Get-Location).Path+"\d\newUpdateResList1.txt"
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False)
$MyFile = Get-Content -Path .\d\newUpdateResList1.txt
[System.IO.File]::WriteAllLines($Path, $MyFile, $Utf8NoBomEncoding) ### step 5 导出差异文件
if ( Test-Path -Path .\newUpdateResList1.txt )
{
$fileCounts = Get-Content -Path .\d\newUpdateResList1.txt
Write-Host ("new md5 file total line " + $fileCounts.Count)
$NewHashFiles = @{}
for( $idx = 0 ; $idx -lt $fileCounts.Count ; $idx++ )
{
$line = $fileCounts[$idx] -split " "
$NewHashFiles[$line[1]] = $line[0]
}
Write-Host ("after hash mapping total line " + $NewHashFiles.Count) $fileCounts = Get-Content -Path .\newUpdateResList1.txt
Write-Host ("old md5 file total line " + $fileCounts.Count)
$OldHashFiles = @{}
for( $idx = 0 ; $idx -lt $fileCounts.Count ; $idx++ )
{
$line = $fileCounts[$idx] -split " "
$OldHashFiles[$line[1]] = $line[0]
}
Write-Host ("after hash mapping total line " + $OldHashFiles.Count) $dirrentHash = @{}
foreach($key in $NewHashFiles.Keys)
{
if ( $OldHashFiles.ContainsKey($key) )
{
if ( $OldHashFiles[$key] -ne $NewHashFiles[$key] )
{
$dirrentHash[$key] = $NewHashFiles[$key]
}
}
else
{
$dirrentHash[$key] = $NewHashFiles[$key]
}
} if ( Test-Path -Path .\c )
{
Remove-Item -Path .\c -Recurse -Force
} $noOutPut = New-Item -ItemType directory ./c -Force Write-Host ""
$dirPath = (Get-Location).ToString() + "\d" -replace "\\","/"
foreach($key in $dirrentHash.Keys)
{
$sourcePath = $dirPath+$key
$targetPath = ".\c"+$key
$sourcePath
$pathParent = Split-Path $targetPath -Parent
if( -not (Test-Path -Path $pathParent) )
{
$noOutPut = New-Item -ItemType directory $pathParent -Force
}
Copy-Item -Path $sourcePath -Destination $targetPath -Force
}
Write-Host "" Copy-Item -Path .\d\newUpdateResList1.txt -Destination .\c -Force
} Write-Host ("total spend time "+ (((Get-Date) - $StartTime).TotalSeconds).ToString() +"s") pause
其它格式的热更新资源列表文件 改改应该也可以用,PowerShell还没入门,写的不好的地方请见谅。
cocos2dx lua 一键资源管理PowerShell脚本实现的更多相关文章
- Cocos2d-x教程(26)-Cocos2d-x + Lua脚本实现大地图缩放功能
欢迎增加 Cocos2d-x 交流群: 193411763 视频教程地址:http://www.tudou.com/programs/view/qRiOfppMghM/ 转载请注明原文出处:http: ...
- cocos2d-x lua脚本开发 1
自从开始关注OpenResty之后,逐渐关注Lua语言,发现这个语言真真是容易让人喜爱的语言.偶然间发现了cocos2d-x,还支持lua,所以果断尝试一下. 这里是在cocos2d-x官方网站下载了 ...
- cocos2dx lua 热加载实现
[Q]原创 2015-08-30 在公司使用cocos2dx+lua 开发游戏有一段时间了,刚好lua的热更新交给我负责.以前热更新的lua脚本大部分都是在下载之后加载.最近策划又有新需求,需要在游戏 ...
- 有关PowerShell脚本你必须知道的十个基本概念
1.PS1文件 一个PowerShell脚本其实就是一个简单的文本文件,这个文件包含了一系列PowerShell命令,每个命令显示为独立的一行,对于被视为PowerShell脚本的文本文件,它的文件名 ...
- cocos2d-x lua 学习笔记(1) -- 环境结构
Cocos2d-x 3.0超过环境的版本号来建立和前Cocos2d-x 2.0 差异较大的版本,从同时Cocos2d-x 3.0项目打包成apkAndroid的应用程序文件,步骤,构建环境有些乏味安德 ...
- Cocos2d-x Lua 阅读Csv文件,使用数据更方便
在我的书或出售之前,我的源代码,有Csvshadow文件. 也许这是偏见.我与工作将是最长的轮廓Csv,所以,我会帮助不大喜欢它的游戏. Csv文件,非常格式easy,也就是说,一个数据线,字段之间用 ...
- 【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】
为什么要使用Lua进行游戏开发?转载请注明出处http://www.cnblogs.com/zisou/p/cocos2dx-lua1.html 上面一个问题我觉得在我们使用Lua之前需要深入思考的, ...
- cocos2d-x lua 学习笔记(1) -- 环境搭建
Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...
- 创建cocos2d-x+lua项目
1> 创建cocos2d-x+lua项目 进入到cocos2d-x-2.1.5\tools\project-creator文件夹运行下面命令: python create_project ...
随机推荐
- ps入门教程:photoshop工作界面
请大家安装好PS(这不是废话嘛……),然后将PS的界面熟悉一下,消除对PS的惧怕心理~~学会新建文件和保存文件,学会设置参考线. 安装完毕后,打开PS,就进入了PS的操作界面,我们来看一下[图1.1] ...
- 001profile条件化创建bean
01.类级别条件创建 @Configuration @Profile("dev") public class Aclass{}---->影响整个类,包括类的注解.开发环境,类 ...
- C++学习笔记(3)----类模板的static成员
与任何其他类相同,类模板可以声明 static 成员: template <typename T> class Foo { public: static std::size_t count ...
- Activity 四种launchMode
launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的 Activity实例,是否和其他Activity实例公用一个tas ...
- 使用@Value进行静态常量的值注入
@Component public class ExpressConstant { public static String URL; @Value("${express.url}" ...
- alembic 数据库管理
alembic简介 Alembic是SQLAlchemy作者编写的Python数据库迁移工具 安装 pip install alembic alembic 操作流程 初始化 alembic init ...
- maven(11)-聚合多模块
聚合项目 一些开源项目,都会把自己的源代码公开到github之类的网站上,我们通过下载其代码,在本地执行maven install,可以把代码编译成jar包安装到本地仓库.而一个项目通常有 ...
- Django objects.all() ,objects.get() ,objects.filter()之间的区别
ret=UserInfo.objects.all() all返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据. ret=UserIn ...
- 在 Azure 虚拟机中配置 Always On 可用性组(经典)
在开始之前,请先假设现在可以在 Azure Resource Manager 模型中完成此任务. 我们建议使用 Azure Resource Manager 模型来进行新的部署. 请参阅 Azure ...
- ajax实现跨域请求
因为现在一直用的mvc,所以就以mvc来说说ajax跨域提交. 首先说说跨域,简单说就是不同域名访问,比如在aaa.com访问bbb.com. 就拿招聘网站来说,分为两种用户,求职者和企业,求职者端是 ...