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

怎么做劳务公司网站海南百度推广seo

怎么做劳务公司网站,海南百度推广seo,阿里网站怎么做,中国建行app下载手机银行一、前言 相比“代理”这个名词我更喜欢叫“委托”#xff0c;虚幻的委托分为三类#xff0c;分别为单播、多播和动态多播。单播顾名思义就是一次只能绑定一个函数的委托#xff0c;多播能一次性绑定多个#xff0c;动态多播即可以在蓝图中进行动态的绑定且可以绑定多个。 …一、前言 相比“代理”这个名词我更喜欢叫“委托”虚幻的委托分为三类分别为单播、多播和动态多播。单播顾名思义就是一次只能绑定一个函数的委托多播能一次性绑定多个动态多播即可以在蓝图中进行动态的绑定且可以绑定多个。 使用的虚幻版本为5.2.1VS版本为2022。 二、实现 在虚幻中创建一个Actor类命名为“DelegateActor”类。 1、定义类型 单播可以定义带参数、返回值和参数返回值三类委托如下代码所示分别定义了这三类单播委托所有的说明见注释部分 DECLARE_DELEGATE(NoParamDelegate);//没有参数没有返回值的委托委托名称为“NoParamDelegate” DECLARE_DELEGATE_OneParam(OneParamDelegate, FString);//一个参数没有返回值的委托名称为“OneParamDelegate” DECLARE_DELEGATE_TwoParams(TwoParamDelegate, FString, int32);//两个参数没有返回值的委托名称为“TwoParamDelegate” DECLARE_DELEGATE_RetVal(FString, OnlyRetDelegate);//仅仅是返回值的委托名称为“OnlyRetDelegate” DECLARE_DELEGATE_RetVal_OneParam(FString, RetOneParamDelegate, FString);//定义了带参数和返回值的委托第一个参数为返回值第二个为委托名称第三个为返回值 2、声明委托类型变量 上述定义的可以将其看作是一个类型定义要真正使用还需要在类中声明该类型的变量如下所示 //单播代理变量的声明NoParamDelegate NoParamDelegate;OneParamDelegate OneParamDelegate;TwoParamDelegate TwoParamDelegate;OnlyRetDelegate OnlyRetDelegate;RetOneParamDelegate RetOneParamDelegate; 注C中居然允许变量名称可以和委托名称一样这样带来的问题是后续想再定义一个同类型的委托变量就会报错。如图2.1.1所示 图2.1.1 因此最好还是将变量名称不要定义成和类型名称一样 NoParamDelegate NoParamDelegate1;NoParamDelegate NoParamDelegate2;OneParamDelegate OneParamDelegate1;TwoParamDelegate TwoParamDelegate1;OnlyRetDelegate OnlyRetDelegate1; 3、定义委托需要绑定的函数 定义的函数要和对应的委托保持一致的返回值和参数。 //单播代理绑定函数定义void NoParamDelegateFunc1();void NoParamDelegateFunc2();void OneParamDelegateFunc(FString strVal);void TwoParamDelegateFunc(FString strVal, int32 intVal);FString OnlyRetDelegateFunc();FString RetOneParamDelegateFunc(FString strVal); 其实现代码如下注FString作为返回值时不能直接返回声明的FString类型变量tempStr必须返回FString(tempStr)这样的结构。 void ADelegateActor::NoParamDelegateFunc1() {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(NoParamDelegateFunc1))); }void ADelegateActor::NoParamDelegateFunc2() {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(NoParamDelegateFunc2))); }void ADelegateActor::OneParamDelegateFunc(FString strVal) {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(OneParamDelegateFunc:%s), *strVal)); }void ADelegateActor::TwoParamDelegateFunc(FString strVal, int32 intVal) {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(NoParamDelegateFunc:%s,%d), *strVal, intVal)); } FString ADelegateActor::OnlyRetDelegateFunc() {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(OnlyRetDelegate)));return FString(); }FString ADelegateActor::RetOneParamDelegateFunc(FString strVal) {FString tempStr strVal.Append(RetOneParamDelegateFunc);return FString(tempStr); } 4、 最后在构造函数或其他初始函数中进行绑定 单播委托的绑定如下所示 NoParamDelegate1.BindUObject(this, ADelegateActor::NoParamDelegateFunc1);NoParamDelegate2.BindUObject(this, ADelegateActor::NoParamDelegateFunc2);OneParamDelegate1.BindUObject(this, ADelegateActor::OneParamDelegateFunc);TwoParamDelegate1.BindUObject(this, ADelegateActor::TwoParamDelegateFunc);OnlyRetDelegate1.BindUObject(this, ADelegateActor::OnlyRetDelegateFunc);RetOneParamDelegate1.BindUObject(this, ADelegateActor::RetOneParamDelegateFunc); 5、执行 通过如下代码进行执行编译代码通过后在编辑器中创建该类的蓝图并将其拖放到场景中运行即可看到每个函数的打印消息。 NoParamDelegate1.ExecuteIfBound();NoParamDelegate2.ExecuteIfBound();OneParamDelegate1.ExecuteIfBound(TestStr);TwoParamDelegate1.ExecuteIfBound(TwoParam, 22222);OnlyRetDelegate1.Execute();//这个和上面的不一样FString tempStr RetOneParamDelegate1.Execute(this is:);GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, tempStr); 注带返回值的和不带返回值的执行函数是不一样的这点官方文档也未作详细说明敲代码的时候这个执行函数也不会提示也是比较坑。 6、解绑与绑定新的函数 解绑有点坑官方文档写的是UnBind,而实际上是“Unbind()函数而在使用了番茄助手的情况下又没有提示敲完”UnBind“后一直报错 NoParamDelegate.Unbind(); 绑定新的函数直接像之前一样添加绑定绑定后会覆盖掉之前的在执行的时候只会执行新的绑定函数。 NoParamDelegate.BindUObject(this, ADelegateActor::NoParamDelegateFunc2); 如图6.1.1所示为官方给定的其他绑定函数不过官方没有案例说明只有如图简单的介绍性说明这点和Unity是没法比所以针对每一个绑定只能自己去尝试使用一下。 图6.1.1 1Bind 绑定现有的委托对象提示没有这个函数暂时还不知道怎么使用。 2BindStatic 需要定义一个静态函数然后进行绑定执行方法不变。 //定义 static void StaticNoParamDelegate();//实现 void StaticNoParamDelegate() {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(BindStatic))); } //绑定全局静态函数 NoParamDelegate1.BindStatic(StaticNoParamDelegate);//绑定类中的静态函数 NoParamDelegate1.BindStatic(类名::静态函数名称); 注意可以绑定类和全局的静态函数这里和之前BindUObject中不同的是参数前不用”“运算符。 3BindRaw 绑定不是继承虚幻UObject类的函数这个和BindUObject正好相反。首先需要在虚幻中创建一个不继承任何东西的类 然后在其类中顶一个不带参数和返回值的函数  //函数定义void Raw_NoParamDelegateFunc();//函数实现 void MyRawClass::Raw_NoParamDelegateFunc() {GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Blue, FString::Printf(TEXT(Raw_NoParamDelegateFunc))); } 注在不经常虚幻基础类的其他类中也可以使用虚幻引擎的打印屏幕函数。 绑定这个函数 MyRawClass* tempRawClass new MyRawClass();NoParamDelegate1.BindRaw(tempRawClass, MyRawClass::Raw_NoParamDelegateFunc); 注意绑定的参数第一个是对象指针如下所示是另一种创建对象方式这都是C的基础(;´༎ຶД༎ຶ)  MyRawClass tempRawClass;NoParamDelegate1.BindRaw(tempRawClass, MyRawClass::Raw_NoParamDelegateFunc); 4BindLambda 绑定一个Lambda表达式Lambda表达式是一个匿名函数片段即可以在函数内单独定一个一段函数代码如下使用关键字auto其中”auto LambdaDelegateFunc []()-void“,()里面可以添加参数返回值可以将void类型改成其他返回值类型。 auto LambdaDelegateFunc []()-void{GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf(TEXT(LambdaDelegateFunc)));};NoParamDelegate1.BindLambda(LambdaDelegateFunc); Lambda表达式也可以直接写在要绑定的方法参数里这个比上面的更简便完全没有函数名 NoParamDelegate1.BindLambda([]()-void{GEngine-AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf(TEXT(LambdaDelegateFunc)));}); 5BindSP 绑定SharedPtr智能指针指向对象的函数即纯C类非继承虚幻基类的类的函数。因为纯C类一般会使用TSharedPtr用于管理内存。 //绑定智指针TSharedRefMyRawClass ObjSP1 MakeShareable(new MyRawClass());NoParamDelegate1.BindSP(ObjSP1, MyRawClass::Raw_NoParamDelegateFunc); 注意这段绑定函数不要和之前的函数一样放在构造函数中否则会出现绑定不成功的情况。 6BindUObject 绑定继承了虚幻引擎基类的类成员函数前面案例中已经介绍使用不再赘述。  三、总结 3.1、单播可以定义三类委托分别为带参数、返回值和参数返回值。 3.2、声明委托的时候变量名称最好不要喝类型名称一样。 3.3、要绑定的函数和定义的委托在参数和返回值上要一致。 3.4、带返回值的和不带返回值的执行函数是不一样的。 3.5、解绑不是UnBind,而实际上是“Unbind()函数。
http://wiki.neutronadmin.com/news/101156/

相关文章:

  • 网站速度查询郑州中原区最新消息
  • 合肥网站建设网站推广津学院怎么给公司建网站
  • 自己做的网站网页错位大连p2p网站建设
  • 网站制作新报价淄博市住房和城乡建设厅网站
  • 网站建设公司哪家好 搜搜磐石网络腾讯网
  • 建立网站的英文短语旅游网站怎么自己做
  • 字形分析网站wordpress 登录插件
  • 网站实施建设流程怎么做类似淘宝一样的网站吗
  • 贵州省城乡住房和建设厅网站首页中国网站建设哪家公司好
  • 网站建设公司主营业务免费建设微网站制作
  • 1000学习做网站贵吗宿州推广公司
  • 服装网站开发dedecms 招聘网站
  • 网页设计网站模板网站建设网页模板购物网站后台流程图
  • 全网vip影视网站一键搭建抖音小程序推广怎么做
  • 网站设计方法丝绸之路网站建设报告
  • 福州做网站互联网公司排名网站建设目标初步目标
  • 网站空间怎么备份说说对网站推广的看法和想法
  • 浦东新区网站推广公司公众号小程序注册
  • 坪山城市建设局官方网站静态html网址网站导航源码
  • wordpress 视频网站学校官网
  • 深圳专业的网站建设网站建设与管理logo
  • 建建设网站的企业2022建站市场
  • 慈溪企业排名网站长沙微商城网站建设
  • 企业网站模板源代码下载前端网站做中 英文
  • 无锡网站制作网站照明网站模板
  • 网站建设的计划书免费网站建设平台
  • 可以接外包的网站今天的新闻联播文字版
  • 济南微信网站开发三亚建设局网站
  • 工商网站做企业公示网站开发工作协议书范本
  • 做 淘宝客最大的网站是叫什么台山网站设计