自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(15)
  • 收藏
  • 关注

原创 Unity手游开发:Addressables之七、Lua加密实现

由于Lua文件读取是使用TextAsset文本类型进行读取,而luajit文件为二进制形式,所以直接以.lua文件名进行读取会导致读取结果异常,需要将.lua改为.bytes进行保存,对应meta也要修改。原方案是使用Addressables.CN来实现加密,但其存在一些问题:加密资源下载后无法直接缓存到本地(真正调用时才会下载并缓存)。由于我们只需求对Lua代码进行加密,所以我们可以使用luajit进行编译加密。若打出的luajit文件读取失败,可能与luajit构建的位数或者版本有关。

2023-11-13 14:58:25 242

原创 Unity手游开发:Addressables之六、Group控制AB包颗粒度策略

AAS的中,可以通过:Group内的资源全部打成一个AB包。:Group内的资源全部分散打包,每个资源打成一个AB包。:Group内相同Label的资源打成一个包。我们目前没有细分Label,所以只考虑使用PackTogether和PackSeparately两种打包模式。。这样最终只会有一个包(不考虑内置资源包),这样的的话资源更新时会下载整个AB包,即游戏的全部资源大小,玩家更新体验极差。。这样最终有多少游戏资源就有多少个AB包,根据我们游戏目前的资源量,会打出上万个AB包。

2023-11-13 14:57:09 244 1

原创 Unity手游开发:Addressables之五、整体更新流程

使用和接口进行catalog的更新。使用进行全部资源的检查,更简单些。

2023-11-13 14:53:44 274

原创 Unity手游开发:Addressables之四、资源版本管理

框架版本(FrameVersion)资源版本(BundleVersion)。框架版本代表的是无法动更的资源的版本,比如游戏引擎和游戏C#代码等。资源版本代表的是可动更的资源的版本,比如游戏模型和lua代码等。由于有动更机制的存在,又可分为底包资源版本(游戏的随包资源)和缓存资源版本(经动更下载的资源)。所以,我们把框架版本定义在C#代码里,而资源版本则定义在Lua代码里。每次更新框架,要提升框架版本号,每次更新资源,要提升资源版本号。另外,每次动更时,将最新的动更资源版本号存储到本地,作为。

2023-11-13 14:51:00 473

原创 Unity手游开发:Addressables之三、Lua代码更新

我们项目原来Lua代码就是独立于AAS系统加载的,有一套Lua代码文件管理系统,而Lua代码不走AAS系统的话,就需要单独设计一套Lua代码更新机制,需要更多的工作量,且整体做法上没有全使用AAS系统更统一些。直接使用AAS,加载使用异步加载,在游戏启动时先加载全部的Lua代码到内存,后续读取缓存就可以实现正常的Lua同步加载逻辑,这应该是之前大家们使用的最常见的方式。Lua代码文件的加载不同于unity的资源加载,异步加载机制对Lua文件的加载很不友好,因为代码都是同步加载执行的。

2023-11-13 14:46:28 111

原创 Unity手游开发:Addressables之二、资源更新模式

Group设置中可以配置资源的更新模式,有两个配置决定资源的更新模式:LoadPath、UpdateRestriction。LoadPath有local和remote之分,remote是指远程地址,比如http请求,而local则是本地加载。AAS对LoadPath选项的设计初衷就是,需要更新的资源就用remote方式,不需要更新的资源使用local方式。UpdateRestriction也有两种选项:Can Change Post Release、Can not Change Post Release,即

2023-11-13 14:39:50 197

原创 Unity手游开发:Addressables之一、介绍与配置

Addressables的简单介绍与配置

2023-09-20 16:10:40 279

原创 Unity手游开发:伽马空间与线性空间总结

目前一般的图像的保存都是在伽马空间。即,在保存时,将图片进行一次伽马转换将图片变得更亮进行存储。由于伽马转换后保存的图片都是提亮后的,所以对图像进行数值计算时得到的值都是不准确的。线性空间对颜色亮度的处理是线性的,即默认处理的图片都是未经伽马转换的正常颜色图,在线性空间对图像的数值计算是准确的。

2023-09-19 15:41:59 467 1

原创 Unity手游开发:支持谷歌AAB

Unity设置gradle版本为6.1.1以上(否则build会报错停止):取消打勾 Unity/Edit/Preference/External Tools/Gradle installed with Unity,将下面的路径指向自己安装的gradle的位置(可使用AndroidStudio的gradle,如:C:\Users\douxia\.gradle\wrapper\dists\gradle-6.1.1-all\cfmwm155h49vnt3hynmlrsdst\gradle-6.1.1)。

2023-09-19 15:38:12 288

原创 Unity手游开发:弱网处理

可靠的(socket不断开的前提下,会自动重试,不会丢包)、有序的(物理层面可能先发后到,但是tcp按顺序交付,先发a再发b即使b先到也先缓存着不交付)。

2023-09-04 11:54:27 418

原创 Unity手游开发:平台差异

在UnityEngine.PlayerPrefs.Setxx后调用一次HasKey可确保之前所有PlayerPrefs的存储生效(若无处理,安卓平台PlayerPrefs的存储在重启游戏后会失效)os.clock有平台差异性,在移动端会有溢出bug,导致取得值为负数。可用luaframework提供的UnityEngine.Time:GetTimestamp()

2023-09-04 11:49:31 57

原创 Unity手游开发:踩坑杂记

有一点要注意,setpeer之后要对处理后的go进行lua引用,否则peer表会被lua的垃圾回收机制回收掉,导致扩展属性丢失。Unity把普通文件夹代码和Editor文件夹的代码分为两个工程Assembly-CSharp.csproj和Assembly-CSharp-Editor.csproj,如果Editor代码引用了普通文件夹的代码则编辑器会报错找不到相关代码,这时候需要打开Assembly-CSharp-Editor.cspro修改字段为true。

2023-09-04 11:48:38 88

原创 Unity手游开发:异步加载

目前游戏的资源管理使用的是Addressables,仅支持异步加载。所以目前游戏内全部使用异步加载方式进行所有资源的加载。将数据存储、资源和网络异步初始化、界面逻辑表现进行分离,更条理清晰。2. 优化多个需次序进行的异步加载代码,避免“回调地狱”。展示顺序的异步加载方案,避免“回调地狱”。展示资源加载和网络请求同时异步操作示例。1. 资源加载和网络请求同时进行。展示单个资源加载过程。展示批量资源加载过程。

2023-09-04 11:42:28 185

原创 【Unity】弹性鱼竿简单实现-通过贝塞尔曲线修改Mesh

一、实现思路弹性鱼竿,即可以根据受力状态自由弯曲的鱼竿,如何实现“弯曲”是关键。说到弯曲,自然而然想到曲线,从曲线的角度出发,那么关键就是如何生成曲线,以及如何根据曲线修改物体形状,从而达到弯曲的效果。生成曲线的话,可以直接想到用贝塞尔曲线,由n个控制点绘制出n阶贝塞尔曲线,通过修改控制点的坐标来控制曲线变化。然后我们可以考虑修改模型的Mesh顶点坐标来实现弯曲效果。完成效果如下:二、...

2020-05-08 16:03:25 3928

原创 cocos2dx报错 node still marked as running~另类原因

Assert failed: Node still marked as running on node destruction! Was base class onExit() called in derived class onExit() implementations?

2016-12-28 17:54:22 966

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除