提问人:Mokhabadi 提问时间:10/19/2023 更新时间:10/19/2023 访问量:41
如何在Unity(游戏引擎)中截获方法调用
How to intercept method calls in Unity (game engine)
问:
在我的项目中,我有很多类型和许多方法,具有相同的签名和相同的正文。它们都打包(序列化)它们的参数,将它们发送到服务器,等待结果,然后解压缩结果。
我认为拦截方法调用、获取它们的参数、调用公共代码并注入结果是很好的。
我已经在 .Net 6 应用程序中使用 Fody(MethodDecorator、MethodBoundaryAspect)和 PostSharp 成功地完成了此操作,但它们都无法在 Unity 中工作。
我正在使用 Unity LTS 2022,我的目标平台是 Android,但我计划发布 IOS 和 OpenGL 版本。我的代码要点如下:
public class UserHandler: Handler
{
public Task<(bool, string)> Command1((string message, int wait) data)
{
return Send<(string name, int avatarId), (bool, string)>(data);
}
public Task<string> Command2(int data)
{
return Send<int,string>(data);
}
}
public class Handler
{
public string name;
Server server;
public async Task<TResult> Send<T, TResult>(T content, [CallerMemberName] string command = "")
{
byte[] bytes = await Packer.Pack(content!);
bytes = await server.Send(name, command, bytes);
return await Packer.Unpack<TResult>(bytes);
}
}
答: 暂无答案
评论