找回密码
 立即注册
查看: 543|回复: 7

Unreal的代理delegate是什么,为什么需要这种东西?

[复制链接]
发表于 2020-12-29 17:18 | 显示全部楼层 |阅读模式
Unreal的代理delegate是什么,为什么需要这种东西?
发表于 2020-12-29 17:26 | 显示全部楼层
你先知道有这么个东西,就可以了。
等业务中遇到相应的问题之后,自然就想到这个了。(想不到的话可以考虑转行了)
要是用不到这玩意,了解再详细也用不上。
这种东西我不建议其他答主举例子,无论是从各位答主的工作里找机制还是凭空硬造个需求来强行讲解,在学习者角度来说没意义。
 楼主| 发表于 2020-12-29 17:27 | 显示全部楼层
Ue是个自动垃圾回收语言,只存函数指针是维持不住对象的引用的,所以需要包一层。
而且只有函数你的this指针怎么办,每次都通过参数传?


callback并不只是函数,callback的用意是,让你在别的地方可以调用另一个地方的方法。所以才叫delegate(代理)。它不是函数,它是的作用是让你调用另一个函数,就和它自己调用自己一样。
发表于 2020-12-29 17:35 | 显示全部楼层
@powerking 说的是对的,设计这个的目的是为了观察者模式。
详细说明可以参考观察者模式的详细说明……
发表于 2020-12-29 17:45 | 显示全部楼层
用来解耦观察者模式的,不然你就必须在被观察者的代码里插入大量的观察者代码,整个代码的可读性就被严重的破坏了,而且很难维护。每次你只是要变动观察者的代码,却要去修改被观察者,而其实被观察者并不关心这些。事件就是一种常用的观察者模式。
发表于 2020-12-29 17:51 | 显示全部楼层
这些都是最最基础的知识点,这个一两句也说不清楚,代理主要是用于架构上的解耦合,和蓝图发报机原理差不多。


你去找找我的文章有介绍过单播多播和动态多播以及代理事件,看完就明白了。
UE4核心技术进阶。
发表于 2020-12-29 17:57 | 显示全部楼层
当你想异步触发,做回调操作,就需要用到代理了。找个UE4源码实例看下就知道了。
发表于 2020-12-29 18:07 | 显示全部楼层
就是java中的interface,c中的callback...
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-10 11:25 , Processed in 0.092784 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表