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")]
...
Injection的基本使用
前提
在看mono.Ceil前有几个需要提前说明的,注入的时候需要参考il指令,每个il的指令的意义可自行通过百度、google学习
IL
在讲il之前,先看看怎么查看il代码
怎么查看il代码?
我使用的工具是rider(在unity中使用的!其他ide只能自行百度了!)。
首先是编译项目
然后就是等待编译完成,成功后,il view会自动刷新,失败就保留上一次的结果。
打开il视图
il是什么?
前面说了怎么看il代码了,那么现在我们就说说il!...
Injection的基本理论
Injection的基本理论
代码的大致运行流程
这里就假设你是一个会写C#的,我们通过csc或者donet指令将写好的C#代码编译成我们需要的exe或dll,然后目标机器启动加载编译的代码dll之类的。
但是如果dll没有加密,并且我们也需要在其中注入自己想要的执行代码的时候(比如我想把原本打印的信息修改了~别理会为什么!),那么我们从理论上应该怎么做呢?
如下图所见(如果项目需要跑脚本的话)
基于上图,我们试想一下,如果在生成dll后,对dll进行解释,然后再dll里加入我们想要的代码后,再交给目标机器去执行,这样就能达成我们想要的效果了!
如下图所示
按照这样的思路,如果我们注入的是hotfix,那会如何?
Mono.ceil
Mono.Cecil库对进行...
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...
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...
Unity的性能优化之路
比较常见的Unity项目优化
平时多逛逛uwa
常见的unity优化项一般有一下几大点:
运行时效率
批次(batch)
加载时间
构建时间
运行时效率
UGUI的优化
UGUI优化方案
C# 逻辑的调度(property、field)
从IL上看,field调用的是Ldfld,而property调用的是Callvirt,不用想也是Ldfld的效率高了!
所以,如果是高频率使用的,还是建议牺牲部分设计模式,采用public field比较好(如果不差那点性能,可以忽略这点);
对象池、GC
创建对象的时候会牵连内存整理,空间申请等,消耗是不言而喻的;而且对象的大量、频繁创建和回收,都会带来GC的回收消耗!
所以,对象池的使用就更显得可贵了!
如果使用的是un...
unity手动合批
背景
unity的静态合批在特定的情况下不能有效地合批,但是在scene的场景中缺有大量的静态物体!
技术原理
通过代码手动合批,生成一个个合并后的mesh和纹理材质,然后替换场景中原有的物体!
具体
unity本身也提供了相应的api给我们处理,在说到实现前,需要先说明一下合批的一些前提条件:
前提
材质(Material):材质球要相同,如果材质球不同,unity则无法进行静态合批!
静态(static): 必须是静态的对象!
CombineInstance
Struct used to describe meshes to be combined using Mesh.CombineMeshes.
用来描绘网格合并的结构,主要是为了使用Mesh.Com...
159 post articles, 20 pages.