Home

Unity importer

之所以写这一片文章记录,是因为unity addressable的lua文件的读取支持问题! ScriptedImporter ScriptedImporter是Unity2017.1引入的功能,使用它,我们可以让Unity识别很多它无法识别的文件,比如Excel(.xlsx)文件,自定义的一些后缀的文件。 所以我们需要在unity导入资源的时候,将其转换成unity能识别的资源类型就可以了! using System.IO; using UnityEditor.Experimental.AssetImporters; using UnityEngine; namespace DefaultNamespace { [ScriptedImporter(1, "lua")] ...

Read more

Injection的基本使用

前提 在看mono.Ceil前有几个需要提前说明的,注入的时候需要参考il指令,每个il的指令的意义可自行通过百度、google学习 IL 在讲il之前,先看看怎么查看il代码 怎么查看il代码? 我使用的工具是rider(在unity中使用的!其他ide只能自行百度了!)。 首先是编译项目 然后就是等待编译完成,成功后,il view会自动刷新,失败就保留上一次的结果。 打开il视图 il是什么? 前面说了怎么看il代码了,那么现在我们就说说il!...

Read more

Injection的基本理论

Injection的基本理论 代码的大致运行流程 这里就假设你是一个会写C#的,我们通过csc或者donet指令将写好的C#代码编译成我们需要的exe或dll,然后目标机器启动加载编译的代码dll之类的。 但是如果dll没有加密,并且我们也需要在其中注入自己想要的执行代码的时候(比如我想把原本打印的信息修改了~别理会为什么!),那么我们从理论上应该怎么做呢? 如下图所见(如果项目需要跑脚本的话) 基于上图,我们试想一下,如果在生成dll后,对dll进行解释,然后再dll里加入我们想要的代码后,再交给目标机器去执行,这样就能达成我们想要的效果了! 如下图所示 按照这样的思路,如果我们注入的是hotfix,那会如何? Mono.ceil Mono.Cecil库对进行...

Read more

confluence上写markdown

Confluence Confluence是目前公司的的集成wiki,但是由于其markdown的宏对真正的markdown的支持很有限,(各种样式都没有)。 wiki标志 confluence的markdown宏使用不了的情况下,但是为了统一而且好看的样式,源文档就必须是使用markdown写了,但是又如何将markdown放置到wiki上呢;这个时候就需要wiki标志,将markdown转换成wiki标志。 markdown转换成wiki标志 https://zhuyi731.github.io/m2c-webpage/ 这个是工具的link,当然也可以将其clone下来,自己仿照其写另外一个工具 https://github.com/Zhuyi731/m2c-webpa...

Read more

unity的arm优化阅读要点

扩展阅读 开发资源 https://developer.arm.com/solutions/graphics 其他 GPU PRO ice cave 的demo https://www.youtube.com/watch?v=gsyBMHJVhXAs 通用 project Setting Pixel Light Count Texture Quality Antialiasing Soft Particles Anisotropic Texture Shadows Realtime Refl...

Read more

Unity的性能优化之路

比较常见的Unity项目优化 平时多逛逛uwa 常见的unity优化项一般有一下几大点: 运行时效率 批次(batch) 加载时间 构建时间 运行时效率 UGUI的优化 UGUI优化方案 C# 逻辑的调度(property、field) 从IL上看,field调用的是Ldfld,而property调用的是Callvirt,不用想也是Ldfld的效率高了! 所以,如果是高频率使用的,还是建议牺牲部分设计模式,采用public field比较好(如果不差那点性能,可以忽略这点); 对象池、GC 创建对象的时候会牵连内存整理,空间申请等,消耗是不言而喻的;而且对象的大量、频繁创建和回收,都会带来GC的回收消耗! 所以,对象池的使用就更显得可贵了! 如果使用的是un...

Read more

unity手动合批

背景 unity的静态合批在特定的情况下不能有效地合批,但是在scene的场景中缺有大量的静态物体! 技术原理 通过代码手动合批,生成一个个合并后的mesh和纹理材质,然后替换场景中原有的物体! 具体 unity本身也提供了相应的api给我们处理,在说到实现前,需要先说明一下合批的一些前提条件: 前提 材质(Material):材质球要相同,如果材质球不同,unity则无法进行静态合批! 静态(static): 必须是静态的对象! CombineInstance Struct used to describe meshes to be combined using Mesh.CombineMeshes. 用来描绘网格合并的结构,主要是为了使用Mesh.Com...

Read more