ILRuntime类型系统概述
前言笔者在前段时间为CatJson进行ILRuntime适配时,因为涉及到反射与泛型的跨域使用,故而进行了一番对ILRuntime类型系统的研究。
本文将从三个方面对ILRuntime类型系统进行讨论:
热更层往主工程传递实例
热更层调用主工程泛型方法
热更层往主工程传递Type对象
热更层往主工程传递实例123456789101112131415161718192021222324252627/// <summary>/// 主工程类型/// </summary>public class MainClass { }/// <summary>/// 主工程工具类/// </summary>public static class Util{ public static void Test(object obj) { //打印出obj的类型 Debug.Log(obj.GetType()); }}/// <summary ...
Hexo博客搭建-rsync的使用
安装rsync在前端Hexo目录下输入
123//安装rsync部署插件npm install hexo-deployer-rsync --save
在Hexo配置文件中添加,注意代码缩进,各参数含义请参考Hexo官方文档
12345678910deploy:type: rsynchost: <host> //主机ipuser: <user> //之前设置ssh的用户名root: <root> //远程主机文件存储位置port: [port] //ssh登陆端口,一般填写22delete: [true|false] //是否删除远端存在而本地不存在的文件args: //提供的其它rsync参数信息verbose: [true|false] //输出详细信息,推荐trueignore_errors: [true|false] //即使出现IO错误也进行删除,推荐false
在Hexo中使用rsync必须客户端和服务器都装有rsync,这里服务器以ubuntu为例子。
123//服务端安装rsyncapt-get updateapt-get ins ...
Unity-CharacterController(角色控制器)
Unity-CharacterController(角色控制器)描述:角色控制器可以让你更容易的处理有有碰撞的运动,同时不用处理刚体。(也就是说角色控制器负责处理角色的移动,如果添加角色控制器,就不用在添加刚体组件)
角色控制器不受力的影响,并且只有当你调用move函数时才会移动。他的运动收碰撞的约束。
变量:public Vector3 center;
描述: 角色胶囊体的中心相对于transform的位置。
1234567public class ExampleClass : MonoBehaviour { public CharacterController controller; void Example() { controller = GetComponent<CharacterController>(); controller.center = new Vector3(0, 1, 0); }}
public CollisionFlags collisionFlags; ...
C#高级编程:未公开关键字研究
简介C#语言中存在4个未被文档记录(Undocumented)的关键字,在VS、Rider这样的IDE中试图敲出它们时并不会给你任何智能提示,它们分别是:
__makeref
__refvalue
__reftype
__arglist
这4个关键字都涉及对IL代码栈数据的直接操作,并且都与TypedReference有关
TypedReference那么TypedReference又是什么东西呢?
简而言之,TypedReference就是一个包装了对象指针和对象类型的结构体
__makeref此关键字用于使用指定对象创建引用此对象的TypedReference
对应的IL代码则是直接使用mkrefany指令创建TypedReference对象
__refvalue此关键字用于从TypedReference获取对象(类型必须一致或可转换)
对应的IL代码则是直接使用refanyval指令获取对象
因为TypedReference保存的是对象指针,所以可以通过对__refvalue赋值来修改tf所引用变量的值,以实现引用传递的效果
__reftype此关键字用于从Typ ...
CatAsset使用教程
框架版本此教程文档基于CatAsset在Github上main主干的最新版本编写
资源构建指定资源目录CatAsset基于资源目录与构建规则以进行批量资源构建,所以构建资源的第一步便是指定资源目录
操作方法为:右键目录-添加为资源包构建目录
点击上方工具栏CatAsset-打开资源包构建窗口
点击构建目录页签,即可看到此目录的信息
选择构建规则构建规则决定了此目录下所有资源文件会按照什么样的方式去构建成为资源包
点击NAssetToOneBundle处的下拉按钮展开下拉列表,选择构建规则
NAssetToNBundle(将指定目录下所有资源分别构建为一个资源包)
NAssetToNRawBundle(将指定目录下所有资源分别构建为一个原生资源包)
NAssetToOneBundle(将指定目录下所有资源构建为一个资源包)
NAssetToOneBundleWithTopDirectory(将指定目录下所有一级子目录各自使用NAssetToOneBundle规则进行构建)
如何扩展构建规则?只需要通过自定义类实现IBundleBuildRule接口,并将其放置于CatAsse ...