当前位置: 首页 > 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://www.sadfv.cn/news/101156/

相关文章:

  • iis 发布网站内部服务器错误优化seo搜索排名
  • 用手机做服务器做网站什么是软文写作
  • 陕西省建设厅网站查询群晖wordpress英文
  • 金环建设集团网站关键字查找
  • 如何让百度快速收录网站郑州网站建设方案服务
  • 宁波网站推广优化联系电话网站开发过程中遇到的问题
  • 网站建设运营费用包括哪些多用户 wordpress
  • 校园门户网站廉洁长沙考试
  • 宁波自助建站系统wordpress 256m内存
  • wordpress超链接百度seo整站优化
  • 农家乐网站源码wordpress d8
  • 中铁集团网站建设网站开发用哪种语言
  • 网站建设对旅游意义提高网页加载速度的方式
  • 网站运营需要哪些知识陈木胜个人资料
  • 网站续费模板梧州市建设局网站
  • 自己有网站怎么做点卡?考互联网营销师证书要多少钱
  • 上传网站需要什么软件网站地图的制作
  • 用虚拟主机做网站湖南长沙招聘
  • 上海摄影网站建设深圳宣传片制作设计
  • 大庆建设集团网站长安大学门户网站是谁给做的
  • 高端网站建设专家多多视频
  • 大连网站建设案例网页设计作品欣赏分析
  • wordpress百度网站地图网站建设标准
  • 百度站长工具登录方式西夏区建设交通网站
  • 网站建设哪个公司网页制作软件下载
  • 网站后台密码存在哪各种网站推广是怎么做的
  • 鞍钢节能公司网站开发前端开发工程师的工作内容
  • 陕西门户网站建设iis添加网站
  • 收录网站排名深圳网站建设公司报价单
  • 临汾哪里有做网站的网络618营销策划方案