前言toLua Framework是一款开源的Unity+toLua热更新框架,越来越多的游戏项目将其应用于热更新开发,但这样会形成了Lua+Mono双GC系统,而有的开发人员优化时往往只针对Mono层的优化而忽略Lua层的性能问题,或者没有类似于Unity Profiler这样高效直观的优化工具,又或者认为Lua拥有类似于C#的垃圾自动回收机制而不必优化。其实,Lua使用不规范也会造
转载
2024-05-29 11:32:20
284阅读
此文为搬运帖,原帖地址前言 在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。 整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用的状态。事实上即使到现在lua+unity的方案仍不能轻易的说可以肆意
转载
2024-04-24 19:48:09
97阅读
Monos就像是一个神奇的酱汁,,混合成Unity平台这个食谱,并且赋予了它跨平台的能力。 Mono是一个开源的项目,基于API(应用程序编程接口),说明书和来自微软.NET框架的通用库工具建立起了它自己(Mono)的框架和库.但是却几乎不能对源代码进行访问。注意,尽管Mono库建立在开源的微软娱乐基础NET类库上,但是它(Mono)完全的兼容了基础的微软库。Mono项目的目标是提供使用NET框架
转载
2024-04-15 11:02:03
36阅读
现在用unity做项目 90%都是用NGUI,并且我个人觉得NGUI应该算是比较成熟的UI插件,虽然他也存在很多问题,但是至少这么多游戏都在用,它目前是能hold住的,嘿嘿。 这篇文章说说我现在是怎么自适应UI 和 3D 游戏的。。1.获取屏幕的宽高Screen.width Screen.height 可以回去设备屏幕的宽高,但是它并不是NGUI的宽高。比如你想做一个全屏的
最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化.Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大。 Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需
转载
2024-05-23 22:26:01
8阅读
内存是游戏中比较重要的一项,如果没有做好内存的管理,游戏可能会出现卡顿甚至闪退的现象。Unity中的内存开销大致可以分为三类:1.资源内存占用 2.引擎自身内存占用 3.托管堆内存占用其中资源内存占用可参考上篇Unity优化相关总结(资源),引擎自身内存占用了解不是很深,还需要进一步学习,今天主要来说一下托管堆内存。一.托管堆内存(Mono内存)基于Unity开发而言,托管
转载
2024-06-09 08:10:36
149阅读
内存:内存消耗是一个关键的性能指标,尤其是在内存资源有限的平台上,比如低端移动设备。内存消耗分析:在Unity中诊断内存问题,Unity介绍了一款开元的可视化内存分析工具——MemoryProfiler,地址:https://bitbucket.org/Unity-Technologies/memoryprofiler这个工具兼容了Unity高于5.3的所有版本。在对用IL2CPP编译出来的游戏进
转载
2024-04-27 17:19:36
109阅读
这个人也是小白,不对的地方请指出他好更改。1.热更新是干什么用的? 我们拿Android手机的APP为例,假如一个一二十M的APP更新了版本,一般是叫用户重新下载一个最新版本的APK文件重新安装。  
转载
2024-03-26 21:51:02
64阅读
Unity3D:血条制作1:要求2:使用IMGUI实现:3:使用UGUI实现3.1设置3.2 脚本1:LookAtCamera.cs2:SliderController.cs4:两种实现的优缺点:1:IMGUI2:UGUI5:预制使用:6:视频演示:6.1:IMGUI:6.2 UGUI:7:项目仓库 1:要求分别使用 IMGUI 和 UGUI 实现使用 UGUI,血条是游戏对象的一个子元素,任何
转载
2024-04-14 15:39:57
47阅读
Unity中调用LUA:
优先导入tolua资源包,只能是5.6.5以上版本。
LuaState lua = new LuaState() 定义并创建一个LUA脚本的虚拟机
LuaState.Start() 开启虚拟机
LuaState.AddSearchPath(string) 传入一个路径添加路径下的LUA脚本但不执行,调用DoFile或Reqire后直接传入脚本名.lua执行(二者有别)
L
1 //父子节点相关的:
2 parent 变量表示Transform的父节点
3 root 表示它的根节点,如果没有父节点,它会返回自己
4 //根据名字查找子节点
5 Transform Find(string name)
6 //判断该Transform是否某Transform的子节点
7 bool IsChildOf(Transform node)
8 //
转载
2024-02-20 07:45:46
130阅读
此部分分为以下几个环节来记录Mono平台本地和托管内存域垃圾回收内存碎片IL2CPP如何分析内存问题不同内存祥光性能增强最小化垃圾回收正确使用值类型和引用类型正确使用字符串与unity引擎相关的许多潜在增强对象和预制池Mono平台Mono是一种神奇的调味汁,使Unity具有很多跨平台的功能,其目标使通过框架提供跨平台开发,该框架允许用统用的编程语言编写代码运行在不同的硬件平台上,包括 Linux、
转载
2024-07-14 17:25:23
41阅读
一。使用制作滑动列表:使用UILayout做虚拟列表ui.list = base:findcom("center/ScrollView/Viewport/Content", "UILayout")
ui.list.onCreate = base.createrender
ui.list.onUpdate = base.updaterender
ui.list.ItemRenderer = Asse
转载
2024-04-13 12:11:58
68阅读
前言 在看了uwa之前发布的《Unity项目常见Lua解决方案性能比较》,决定动手写一篇关于lua+unity方案的性能优化文。 整合lua是目前最强大的unity热更新方案,毕竟这是唯一可以支持ios热更新的办法。然而作为一个重度ulua用户,我们踩过了很多的坑才将ulua上升到一个可以在项目中大规模使用
转载
2024-05-13 22:40:38
71阅读
由于目前正在负责的项目是一个二次开发项目,而且留给我们的代码质量实在让人无力吐槽,所以遇到了不少大大小小的坑,好在慢慢都淌过去了。最近就遇到了一个内存泄漏的问题,泄漏发生在lua里,项目代码里以前的开发团队留下了检测泄漏的代码,但也仅限于此。由于代码量庞大,所以想从逻辑上梳理清楚哪里的引用没干掉导致了内存泄漏几乎就是大海捞针。好在解决的过程比较顺利,这篇文章就来谈一谈Lua中如何解决内存泄漏的问题
转载
2024-04-24 09:13:20
86阅读
下载与安装下载地址 GitHub
安装过程1.下载最新版,这里, 解压缩,将Assets目录里的所有内容复制到你的工程中,对于最终产品,可以删除slua_src,例子,文档等内容,如果是开发阶段则无所谓。2.等待unity编译完毕,如果一切顺利的话,将出现slua菜单, 点击slua菜单中 All->Make 命令 手动生成针对当前版本的U3d接口文件。3.每次更新slua版本,务
转载
2024-03-28 13:37:28
26阅读
unity + lua 性能优化 1.0
注册Wrap文件到Lua虚拟机中,有很多的优化方式,比如:(1)BinderLua太多wrap很慢,最佳方案。(早先)推荐大家把可能用到的类,不要直接添加进Wrap,而是添加到link.xml中,如果上线用到了,可以先用反射垫着,整包更新的时候,再添加到wrap里面,这是目前兼顾游戏体验,防范游戏未知问题,最佳选择方案。(2)动态注册Wr
转载
2024-05-21 14:41:04
120阅读
导读随着Lua在项目中的大量使用,它所带来的性能问题也逐步成为了项目运行时的重大性能瓶颈之一。特别是内存相关的性能问题,无论是内存分配过大还是内存泄露无法回收,目前都已经在不少研发项目中集中爆发。UWA推出的GOT Online中的Lua模式已经慢慢成为研发团队对Lua进行日常性能监控的有效手段。因此,也有越来越多的团队反馈,在监控到table数持续上涨,引用Mono对象持续增多等等问题时,应该如
转载
2024-05-27 22:33:14
62阅读
0. 照旧的碎碎念转眼间已经三月了,2月份的博客因为过年的懒惰和开年之后的忙碌而没有写……第二个月就打破了去年总结时对于2018年的愿望,真是羞耻呢……年后在准备新的测试版本,断断续续做了一些优化,更多的精力放在团队的绩效评估、沟通这样偏管理的事物上,说实话技术上可以聊的东西不多。近期看到UWA群里和问答上聊Lua的使用之类的话题比较多,也在看ET这套完全基于C#进行游戏开发的框架中提到——
转载
2024-04-15 12:43:12
34阅读
查找了 Unity 的官方资料,我们如果需要使用 WebGL 需要面对以下几个挑战:Native Plugin:也就是说各种原生插件(C/C++等编译的本地机器码库),我们的挑战是使用了 SLua。多线程:WebGL 端无法支持任何多线程代码,因为 JavaScript 没有多线程的实现,C# 端使用的类似 System.Threading 等库最终都不会被编译成相应的 js 代码。网络模块:传统
转载
2023-08-28 12:48:25
428阅读