【unity实用技能】记一次失败的蓝图接口开发失败经验

本来想写一个批量控制widget开关的接口,想写一个像append一样的可加pin的接口

首先还是找到这个接口得代码

可以看到关键的点就是 CommutativeAssociativeBinaryOperator = "true"
就是这个,标记这个接口是可以加pin的。
接下来就是照着写一下接口

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once
#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "Styling/SlateTypes.h"
#include "Components/Widget.h"
#include "ExtraBlueprintFunctionHelper.generated.h"

/**
 *
 */
UCLASS()
class CLIENT_API UExtraBlueprintFunctionHelper : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()

public:
    UFUNCTION(BlueprintCallable, meta = (DisplayName = "SetBatchVisiable", CommutativeAssociativeBinaryOperator = "true"), Category = "UExtraBlueprintFunctionHelper")
    static UWidget* SetBatchVisiable(UWidget* objA, UWidget* objB);

};

这里有几个要注意的地方:
1.用了CommutativeAssociativeBinaryOperator这个标记为可拓展的话,返回值类型和传的参数类型要一致
2.如果要带流程线的话,就不能用BlueprintPure,要用BlueprintCallable
3.如果用了BlueprintCallable,那么又不能加pin了。。。
就是要不是这样

要不是这样

所以,失败了。。。

原文地址:http://blog.51cto.com/13638120/2173424

时间: 2024-11-09 04:01:47

【unity实用技能】记一次失败的蓝图接口开发失败经验的相关文章

【小松教你手游开发】【unity实用技能】角色头部跟随镜头旋转

这个在端游上比较场景,在角色展示的时候,当摄像头在角色身边上下左右旋转时,角色头部跟随镜头旋转.如天涯明月刀等. 这个在手游上比较少见,不过实现也没什么区别. 首先一般情况下,找到模型的头部节点,直接用lookAt指向camera就可以了,不过一般需求不会这么简单. 比如说,超过头部扭动极限,头部需要插值回到原始点:当镜头从外部回到极限内,需要插值回来.这时候lookat就没法使用. 更有情况,头部本身坐标系不在世界坐标轴上, 可能旋转了90多或者输出的prefab就是歪的等等,这些情况都没办法

【小松教你手游开发】【unity实用技能】unity发包优化(android一键发包)

unity本身的发包其实还是挺方便的,国外的游戏基本都用unity本身的发包. 但在国内的游戏有这么多渠道,这个迭代的速度的情况下,就需要一套更高效的发包方式. 接下来讲具体步骤,如果你们项目有热更新会更麻烦一点. 发包优化的目标是做到一键发包,一般发包机会是一台独立的机子,所以 第一步,更新svn 第二步,配置打包信息.根据不同渠道接入不同sdk 第三步,build apk. 因为我们项目暂时还是测试,所以还没做根据不同渠道接入不同sdk.具体思路是写个xml,在上面填写各种配置信息,版本号,

【小松教你手游开发】【unity实用技能】根据上一个GameObject坐标生成的tips界面

开发游戏,特别是mmo手游的时候经常需要开发的一个需求是,点击某个装备,在它附近的位置生成一个tips界面,介绍装备功能和各种信息. 像上面红色框框里的这个. 这个主要的问题是 根据点击的GameObject对应生成这个详情界面时,详情界面位置需要合理摆放(不能显示不到,不能遮挡等) 基本的思路是, 首先找到GameObject的position, 把手机屏幕大概分成四个象限,知道这个GameObject大概在这个屏幕的哪个象限(左上,左下,右上,右下) 根据象限来判断详情界面应该在GameOb

【小松教你手游开发】【unity实用技能】InvalidOperationException: out of sync

在unity开发中出现这个bug. 在网上查了下是在迭代器中直接修改引起的.c#是不允许你在迭代器中直接修改. 改了一下确实解决. 原本是这样 [csharp] view plain copy public void Run() { foreach (var item in timerDict) { if (null != item.Value) { item.Value.Run(); } } } 改成这样: [csharp] view plain copy public void Run()

【小松教你手游开发】【unity实用技能】Unity内存申请和释放(转自tnqiang)

这里先声明转自http://www.jianshu.com/p/b37ee8cea04c 1.资源类型 GameObject, Transform, Mesh, Texture, Material, Shader, Script和各种其他Assets. 2.资源创建方式 静态引用,在脚本中加一个public GameObject变量,在Inspector面板中拖一个prefab到该变量上,然后在需要引用的地方Instantiate: Resource.Load,资源需要放在Assets/Reso

【unity实用技能】unity3d 陀螺仪控制camera移动旋转

https://docs.unity3d.com/ScriptReference/Gyroscope.html unity 官方文档就很清楚,只有一点要注意: 所有教程都教你怎么用 input.gyro.attitude 但是这个表示的是空间中的位置,首先你是想做像王者荣耀开头晃动摄像机的效果,需要把上个位置记录下来,每次相减获得偏移值. 而更大的问题是,这个空间值可能会有突然转成负数的情况 所以其实一点都不好用. 建议用 m_gyro.rotationRateUnbiased 这个直接给你偏移

【unity实用技能】unity编辑器工具之加载预制(Prefab)和场景(Scene)

在unity里做打包或者帮策划美术做工具的时候经常会需要把Prefab拉出来或者场景打开做检验工作 其实这个在上一篇在ui打包的文章里有提到,不过重点不同,上篇重点是打包,这篇的重点是把里面的一个小知识点拉出来讲一讲 接下来就讲讲两者分别怎么做 一.把预制Prefab拉出来 就是像我们平时把预制拉到这个地方 1.首先是获取你选中的那个Prefab(如果是有其他需求,比如默认目录下的所有文件等,就不这样处理,不过大同小异) GameObject[] selectGameObjects = Sele

【小松教你手游开发】【unity实用技能】线性差值计算实现

其实这个unity本身就有的函数Mathf.Lerp(),为什么还要自己实现呢. 有一个原因就是这个函数返回的是float型,float型如果数字非常大,转出int时会有精度丢失,也就是转出来的值不对. 而且非常简单. 看下公式 public int Lerp(int a,int b,int v) { return (int)(a - (0 - v) / (0 - 1) * (a - b)): } 原文地址:http://blog.51cto.com/13638120/2084965

【小松教你手游开发】【unity实用技能】unity ios快捷打包

ios打包是比较麻烦的,配通一次流程后需要做个笔记把各种插件各种配置在每次打包的时候重新配置,作为一个程序员当然不能接受这么笨的事情,写个脚本让代码去实现这些. 首先,介绍一个标记 [PostProcessBuild] 在函数前写上这个标记,unity在打完包后便会调用这个函数. 所以我们也将用这个标记让unity在包打成xcode项目以后,去改动xcode里面的配置. 而unity也有一个默认的函数给我们使用 static void OnPostprocessBuild(BuildTarget