当前位置: 首页 > news >正文

本地的南通网站建设东莞建站网站

本地的南通网站建设,东莞建站网站,做网站注册商标哪一类,石家庄网站建设平台一. 代理机制#xff0c;代理也叫做委托#xff0c;其作用就是提供一种消息机制。 发送方 #xff0c;接收方 分别叫做 触发点和执行点。就是软件中的观察者模式的原理。 创建一个C Actor作为练习 二.单播代理 创建一个C Actor MyDeligateActor作为练习 在MyDeligateAc…一. 代理机制代理也叫做委托其作用就是提供一种消息机制。 发送方 接收方 分别叫做 触发点和执行点。就是软件中的观察者模式的原理。 创建一个C Actor作为练习 二.单播代理 创建一个C Actor  MyDeligateActor作为练习 在MyDeligateActor.h中不需要其他头文件UE自带的 1.类型的声明代理的名称参数类型个数在Actor外 //单播代理类型声明 DECLARE_DELEGATE(NoParamDelegate); //无参数代理 DECLARE_DELEGATE_OneParam(OneParamDelegate,FString); //单播代理 代理名称参数类型 DECLARE_DELEGATE_TwoParams(TwoParamDelegate,FString,int32); //带有两个参数 的单播代理 代理名称参数1类型参数2类型 DECLARE_DELEGATE_ThreeParams(ThreeParamDelegate,FString,int32,float); //带有三个参数 的单播代理 代理名称参数1类型参数2类型,参数3类型 DECLARE_DELEGATE_RetVal(FString,RevalDelegate); //带有返回参数的。返回参数类型代理名称 2.在Actor里声明对应类型的的单播代理变量 //声明单播代理变量 名称 NoParamDelegate NoParamDelegate; OneParamDelegate OneParamDelegate; TwoParamDelegate TwoParamDelegate; ThreeParamDelegate ThreeParamDelegate; RevalDelegate RevalDelegate; 3.声明代理用绑定的函数 void NoParamFunction();void OneParamFunction(FString str);void TwoParamFunction(FString str,int32 value);void ThreeParamFunction(FString str,int32 value,float value1);FString RevalParamFunction(); 4.在CPP中 构造时对单播代理进行绑定 BindUObject(this,Function); //代理绑定 NoParamDelegate.BindUObject(this,AMyDeligateActor::NoParamFunction); OneParamDelegate.BindUObject(this, AMyDeligateActor::OneParamFunction); TwoParamDelegate.BindUObject(this, AMyDeligateActor::TwoParamFunction); ThreeParamDelegate.BindUObject(this, AMyDeligateActor::ThreeParamFunction); RevalDelegate.BindUObject(this,AMyDeligateActor::RevalParamFunction); 5.在BeginPlay里执行 //代理执行 判断是否绑定 绑定后就执行NoParamDelegate.ExecuteIfBound();OneParamDelegate.ExecuteIfBound(OneParamDelegate);TwoParamDelegate.ExecuteIfBound(TwoParamDelegate,10);ThreeParamDelegate.ExecuteIfBound(ThreeParamDelegate,10, 5.0f);FString strValue RevalDelegate.Execute(); 6.实现绑定的函数 void AMyDeligateActor::NoParamFunction() {GEngine-AddOnScreenDebugMessage(-1,5.f,FColor::Red,TEXT(NoParamDelegate)); }void AMyDeligateActor::OneParamFunction(FString str) {GEngine-AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT(%s), *str)); }void AMyDeligateActor::TwoParamFunction(FString str, int32 value) {GEngine-AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT(%s %d), *str,value)); }void AMyDeligateActor::ThreeParamFunction(FString str, int32 value, float value1) {GEngine-AddOnScreenDebugMessage(-1, 5.f, FColor::Red, FString::Printf(TEXT(%s %d %f), *str, value,value1)); }FString AMyDeligateActor::RevalParamFunction() { FString str FString::Printf(TEXT(RevalParamDelegate));return str; }7.生成BP蓝图后放入场景中。 二. 多播代理 1.多播代理的类型声明一个代理可绑定多个函数 //多播代理类型声明(多播代理可以绑定多个函数) DECLARE_MULTICAST_DELEGATE_OneParam(OneParamMultiDelegate,FString); 2.在Actor里声明对应类型的的多播代理变量 //多播代理声明OneParamMultiDelegate OneParamMultiDelegate; 3.在Actor里声明多播代理绑定的函数 //多播代理绑定的函数UFUNCTION()void MultiDelegateFunction1(FString str);UFUNCTION()void MultiDelegateFunction2(FString str);UFUNCTION()void MultiDelegateFunction3(FString str); 4.CPP实现绑定的函数 void AMyDeligateActor::MultiDelegateFunction1(FString str) {FString TmpStr str.Append(1); //组合一下GEngine-AddOnScreenDebugMessage(-1,5.0f,FColor::Red,FString::Printf(TEXT(%s),*TmpStr)); }void AMyDeligateActor::MultiDelegateFunction2(FString str) {FString TmpStr str.Append(2);GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT(%s), *TmpStr)); }void AMyDeligateActor::MultiDelegateFunction3(FString str) {FString TmpStr str.Append(3);GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT(%s), *TmpStr)); } 5.在构造函数里绑定AddUObject(this,Function); //多播代理绑定 可绑定多个函数OneParamMultiDelegate.AddUObject(this,AMyDeligateActor::MultiDelegateFunction1);OneParamMultiDelegate.AddUObject(this, AMyDeligateActor::MultiDelegateFunction2);OneParamMultiDelegate.AddUObject(this, AMyDeligateActor::MultiDelegateFunction3); 6.在BeginPlay里执行多播代理。 //执行多播代理OneParamMultiDelegate.Broadcast(OneParamMultiDelegate); 7.效果如下 三.动态多播代理 1.动态多播代理类型声明,区别在于可以暴露给蓝图在蓝图中进行事件的绑定。 //DECLARE_MULTICAST_One //动态多播代理类型声明,区别在于可以暴露给蓝图在蓝图中进行事件的绑定. DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FDynamicMultiDelegate, FString, param); 2.动态多播代理变量的反射声明 //动态多播代理,UPROPERTY(BlueprintAssignable)FDynamicMultiDelegate DynamicMultiDelegate; 3.编译后在蓝图里绑定。 4.执行动态多播代理 //执行动态多播代理绑定在我们的蓝图中进行实现DynamicMultiDelegate.Broadcast(DynamicMultiDelegate); 5.效果如下
http://www.dnsts.com.cn/news/232146.html

相关文章:

  • 北京网站建设公司册wordpress主题对应的插件
  • 广东省网站免备案wordpress 免费 主题
  • 建立网站内容医院美容网站建设
  • 如何把网页链导入wordpress深圳百度seo公司
  • 个人网站建设大全网页传奇开服表
  • 盐城网站建设服务新浪网站制作
  • asp网站默认后台大连网站网络公司
  • wordpress底部修改深圳短视频seo教程
  • 网站快速开发平台dns加网站
  • 制作小网站动漫制作专业累吗
  • 什么是网站二级目录枣强网站建设电话
  • 网页设计比较好的网站网站备案信息批量查询
  • 网站域名试用期卡盟网站制作
  • 贵安新区住房和城乡建设厅网站建站能赚钱吗
  • 长春seo网站排名优化济南互联网网络营销
  • 哪个公司网站备案快wordpress+订单号位数
  • 界面十分好看的网站微信管理系统后台
  • 乐昌北京网站建设浙江省住房城乡建设厅官方网站
  • 奉贤深圳网站建设公司asp.net网站开发项...
  • 快速微信网站建设vs2013可以做网站么
  • 越南做网站服务器东营
  • 网站开发服务石家庄求职信息网
  • 做网站必须购买空间吗百度网页推广费用
  • 网站建设经费计划内容哪些网站可以加锚文本
  • 国外企业网站怎么做电脑网站设计页面
  • 合肥网站建设模板系统wordpress图片主
  • 深圳网站建设龙华信科为企业规划一个网站
  • 稻壳网站建设wordpress保存的字体大小
  • 海尔建设此网站的目的是什么意思网站中的搜索功能怎么做的
  • 官方网站建设公司上海百度移动关键词排名优化