(unity二次开发)hook替换unity内部函数,如SceneView.GetMainCamera

有时想要修改unityeditor的行为,例如修改unity内部函数,来达到自己想要的行为。

一个方法是重定向函数指针,让它指向我们自己的函数。可以参考下面大神的方法

Detours: redirecting C# methods at runtime | tryfinally

如果你的工程不想打开unsafe 选项,可以考虑把上面文章里的代码编译成dll,然后放到unity下也能用。

使用例子:

 private static void test()
 {
var GetMainCameraMethod = typeof(SceneView).GetMethod("GetMainCamera", BindingFlags.NonPublic | BindingFlags.Static);
DetourUtility.TryDetourFromTo(
      GetMainCameraMethod, 
      dst: DetourUtility.MethodInfoForMethodCall(() => ReplaceSceneViewGetMainCamera()));

}

static Camera myCamera;
private static void ReplaceSceneViewGetMainCamera()
{
    return myCamera;
}

hook 关键代码,64位函数地址指令

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Unity是一款主要用于游戏开发的跨平台开发工具,它可以用于开发 PC、手机、网页等多种平台的游戏。Unity具有易学易用、高效快速开发、强大的跨平台性等优点,被广泛应用于游戏和虚拟现实开发领域。 超图二次开发是指在超图地理信息系统平台的基础上,通过编程实现用户特定需求的开发过程。超图地理信息系统平台是一种地理信息系统软件开发平台,其具有模块化、可扩展、跨平台等特点,可以满足不同行业、不同领域用户的需求。 相比之下,Unity主要用于游戏开发,而超图主要用于地理信息系统开发。两者虽然应用领域不同,但实际上都是软件开发领域中常见的“二次开发”方式。在程序员熟悉的领域中,使用开发平台进行二次开发可以方便快捷地实现特定需求,同时也可以降低开发成本,提高开发效率。 总之,Unity和超图二次开发都是软件开发领域中常见的二次开发方式,它们基于不同的开发平台,应用于不同的领域,但都有着高效快捷、灵活可扩展等共同的特点。 ### 回答2: Unity是一款跨平台的游戏引擎,可以用来开发Windows、Mac、Android、iOS等多种平台的游戏。它拥有一个强大的可视化编辑器,支持写代码或使用脚本,提供了丰富的组件库,使得开发者能够快速地开发出高质量的游戏。Unity的优点在于不需要太多的编程知识,使得开发者可以更加专注于游戏本身的创作。 超图是一个专业的地理信息系统软件开发公司,提供基于GIS地理信息系统的软件开发和数据解决方案。超图二次开发基于超图技术的前置条件在实现业务上更加高效、精准、交互性更强,在处理历史数据、现场监测数据等数据方面也有其优势。超图可以为不同企业设计、开发和提供定制化的GIS解决方案和技术服务,包括开发GIS软件、GIS数据的整理、处理、分析、创建等。 Unity经常被用于游戏的开发,而超图则经常被用于各类地图信息的处理。两者在开发方式上有些许不同,但在自身领域内具有非常强大的能力。如果开发者需要开发一款地图信息相关的游戏软件,或者需要将游戏加入到地图信息中,使用Unity和超图二次开发来协同工作将非常实用。此时,Unity可以帮助开发者设计出游戏的各个功能,并进行动态效果的展示;超图则可以将地图的各个信息点导入地图中,并实现与游戏的交互效果。两者协同开发可以更好地提高软件的交互性、用户体验,并提升整个软件的品质。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FatherOfCodingMan

如果觉得有用的话,可以赏点饭钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值