Closed gaozhou closed 9 months ago
没做过unity开发,你按文档的步骤操作出现什么问题了?最简单的步骤就是:
- 安装Nuget
- 定义自己的MoAttribute
- 将自己定义的MoAttribute应用到方法上
使用NuGet For Unity 安装rougamo.fody,没效果。
应用Attribute的项目有没有直接引用Rougamo.Fody,间接依赖是不行的。如果是直接引用的,你按你现在使用的方式,建一个unity的简单项目放在github上,然后把地址发我,我本地看看
应用Attribute的项目有没有直接引用Rougamo.Fody,间接依赖是不行的。如果是直接引用的,你按你现在使用的方式,建一个unity的简单项目放在github上,然后把地址发我,我本地看看
https://github.com/gaozhou/rougamo.unity.git unity 版本 2022.3.11f1
我还以为unity使用visual studio开发的,好吧,这样的话我要研究一下怎么编译运行了
我还以为unity使用visual studio开发的,好吧,这样的话我要研究一下怎么编译运行了
要用UnityEditor 打开工程,然后就可以使用visual studio开发了,也可以使用rider 你可以参考这个工程,也是使用了 Fody,但是没有rougamo好用 git@github.com:ByronMayne/Weaver.git
我看了下你发的这个项目,他没有直接使用fody,他是使用Mono.Cecil的,他的意思应该是他的代码实现很大程度是参考fody的。
目前来看肉夹馍无法支持unity,fody是在msbuild中添加了一个任务,在编译后执行编织操作,但unity有自己的编译管道,无法与msbuild集成,所以导致fody无法生效,fody系列的组件,包括肉夹馍都无法在unity中使用。
我找到了一个unity集成msbuil的项目 https://github.com/microsoft/MSBuildForUnity ,但是在你给的项目中编译都不通过,这个项目更新比较少,不确定是不是你测试项目的unity版本太高不兼容。我对unity还是不熟,你可以按照这个项目的指示试一下,看能不能行,降低一下unity的版本再测试一下看看
https://github.com/vovgou/loxodon-framework 这个repo里面给unity接入了fody,你看看rougamo能不能接入进去呢? https://github.com/vovgou/loxodon-framework/blob/master/Loxodon.Framework.Fody/README_CN.md
我接进去了,可以使用,但是每一帧都会产生344B的gc,能不能优化一下,内存分配,改成池化内存,或者改成struct
具体接入的方式方便写篇文章或出个文档吗,之前也有人问unity的接入方式
优化方面,后续我先改一般结构体的看看效果
具体接入的方式方便写篇文章或出个文档吗,之前也有人问unity的接入方式
优化方面,后续我先改一般结构体的看看效果
我还在测试,目前还有点问题,不过按照这个思路应该是ok的。
我接进去了,可以使用,但是每一帧都会产生344B的gc,能不能优化一下,内存分配,改成池化内存,或者改成struct
我这边进行了优化,有空的话可以更新到2.2.0最新试用版本测试一下,或者告知一下你使用的framework版本(不知道unity是否需要选择framework版本)以及观测GC的方式。
更新版本后还没有完成优化,需要进行以下操作:
// 1. 之前一般是直接继承MoAttribute,现在改定义结构体实现IMo接口
struct ValueMo : IMo
{
// 实现接口,完成AOP操作
}
// 2. 之前直接应用Attribute到类或方法的方式改为使用RougamoAttribute+定义的结构体
[Rougamo(typeof(ValueMo))]
class Cls
{
}
// 3. 如果没有使用到MethodContext.Mos属性,在实现IMo接口时,MethodContextOmits属性可以指定为Omit.Mos
public Omit MethodContextOmits => Omit.Mos;
// 4. 如果没有使用到MethodContext.Arguments属性,在实现IMo接口时,MethodContextOmits属性可以指定为Omit.Arguments,同时Features属性需要排除0x10和0x200
public Omit MethodContextOmits => Omit.Arguments;
public Feature Features => (All ^ 0x210) & All;
没做过unity开发,你按文档的步骤操作出现什么问题了?最简单的步骤就是: