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实例后,通过命令做一些调试工作,比如测试获取和设置的结果是否符合预期等