Bootstrap Chameleon Logo

Get value from Slate

Slate, UMG, Editor UMG

编辑器界面中的Slate控件在引擎代码中都是以字母“S”开头,“S”代表Slate。Slate是为引擎自身而设计的,而不是为GamePlay(GamePlay使用的UI系统是UMG,控件首字母为"U"),

通过ChameleonData,我们可是修改界面上的大部分控件中的常用属性

ChameleonData

获取

1. unreal.PythonBPLib.get_chameleon_data

在MiminalExample中,我们在Python工具类的构造函数中获取并保存了当前工具的ChameleonData实例,并保存到self.data 中

class MinimalExample(metaclass=Singleton):
    def __init__(self, jsonPath:str):
        self.jsonPath = jsonPath
        self.data = unreal.PythonBPLib.get_chameleon_data(self.jsonPath)

同样,我们也可以在任何python代码中通过JsonPath来获取已经创建的ChameleonData实例

unreal.PythonBPLib.get_chameleon_data("TA/TAPython/Python/Example/MinimalExample.json")

或者JsonPath的全路径:

unreal.PythonBPLib.get_chameleon_data(<Your_UE_Project>/TA/TAPython/Python/Example/MinimalExample.json")

2. unreal.PythonBPLib.get_all_chameleon_data_paths

同样,我们可以通过JsonPath获取任何一个已经创建了的Chameleon工具的ChameleonData。

我们可以通过 unreal.PythonBPLib.get_all_chameleon_data_paths() 获取当前编辑器中所有已经创建了的ChamaleonTool的JsonPath。然后再通过unreal.PythonBPLib.get_chameleon_data获取ChameleonData实例

get_all_chameleon_data_paths(...) method of builtins.type instance
    X.get_all_chameleon_data_paths() -> Array[str]
    Get the chameleonData by JSON file path

    Returns:
        Array[str]: All path of current Chameleon Tools's JSON file paths.

3. 通过工具实例

之前的介绍中,我提到过,在JSON界面文件中的"InitPyCmd" 中的变量名是在全局空间中的,因此我们可以在通过这些工具变量名来获取它们的界面的ChamaleonData实例,从而修改它们的界面。

例如: 在我们可以在我们的工具,或者Python Console中,通过:

chameleon_gallery.data.set_text(aka_name="IsPythonReadyText", text="Some Changed text")

来修改Gallery界面中的文字

注意
  • 虽然我们可以这样做,但不推荐,这回使得工具直接的调用变得混乱。工具直接的相互通讯建议使用接口函数或者Signal
  • 更常用的情况是在PythonConsole中获取ChamelonData实例后,通过命令做一些调试工作,比如测试获取和设置的结果是否符合预期等