UEC++Part6--碰撞预设、委托、auto补充
一、碰撞预设1、碰撞设置主要4种类型NoCollision(无碰撞)、query、Physics、Probe。语法如图其余类似。ALBox-SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); ALBox-SetCollisionEnabled(ECollisionEnabled::QueryOnly);2、自身碰撞类型ALBox-SetCollisionObjectType(EEC_WorldStatic);其余还有WorldDynamic、Pawn、PhysicsBody、vehicle、Destructible。(前面都要加EEC)3、碰撞响应ALBox-SetCollisionResponseToChannels(ECR_Block);其余还有Overlap、Ignore。如果像这样设置是设置全部碰撞类型的响应如果想要单独设置单个类型的响应可以ALBox-SetCollisionResponseToChannels(EEC_WorldStatic,ECR_Block);以此类推二、auto补充TMapFString, int32 MyMap; // 旧样式 for (auto It MyMap.CreateIterator(); It; It) { UE_LOG(LogCategory, Log, TEXT(Key: %s, Value: %d), It.Key(), *It.Value()); } // 新样式 for (TPairFString, int32 Kvp : MyMap) { UE_LOG(LogCategory, Log, TEXT(Key: %s, Value: %d), *Kvp.Key, Kvp.Value); }三、单播代理委托1、创建DECLARE_DELEGATE(FALDelegate) DECLARE_DELEGATE_OneParam(FALDelegateOne, int32) DECLARE_DELEGATE_TwoParams(FALDelegateTwo, int32, float) DECLARE_DELEGATE_ThreeParams(FALDelegateThree,int32,float,FString) DECLARE_DELEGATE_RetVal(int32, FALDelegateRetVal)//声明 void NoParamFunc(); void OneParamFunc(int32 InInt); void TwoParamFunc(int32 InInt, float InFloat); void ThreeParamFunc(int32 InInt, float InFloat, FString InString); int32 RetValFunc();//方法2、代理绑定事件NoParamDelegate.BindUObject(this, AALActor::NoParamFunc); OneParamDelegate.BindUObject(this, AALActor::OneParamFunc); TwoParamDelegate.BindUObject(this, AALActor::TwoParamFunc); ThreeParamDelegate.BindUObject(this, AALActor::ThreeParamFunc); RetValDelegate.BindUObject(this, AALActor::RetValFunc);//写在构造函数内3、执行NoParamDelegate.ExecuteIfBound(); OneParamDelegate.ExecuteIfBound(42); TwoParamDelegate.ExecuteIfBound(42, 3.14f); ThreeParamDelegate.ExecuteIfBound(42, 3.14f, TEXT(Ciallo)); int32 RetVal RetValDelegate.Execute();四、多播代理1、创建DECLARE_MULTICAST_DELEGATE(FALMulticastDelegate)2、绑定MulticastDelegate.AddUObject(this, AALActor::NoParamFunc); MulticastDelegate.AddUObject(this, AALActor::NoParamFunc2); MulticastDelegate.AddUObject(this, AALActor::NoParamFunc3);//多播代理可以绑定多个函数3、执行MulticastDelegate.Broadcast();
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2440472.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!