如何从密钥中获取 属性 名称?
How to get the property name from key?
我正在尝试获取正在从动画播放器节点更改的所有属性和值的列表,
但是如何获取动画键正在更改的节点的 属性 名称?
可能是这样的:
var ani=aniplayer.get_animation('running');
for i in range(0,ani.get_track_count()):
var key_idx=ani.track_find_key(i,0,0);
print("property=>",ani.get_key_property(i,key_idx)," new value=>",ani.track_get_key_value(i,key_idx));
假设您有一个动画播放器:
var aniplayer := $AnimationPlayer as AnimationPlayer
你得到一个动画的名字:
var ani := aniplayer.get_animation("running")
如您所知,您可以获得动画的轨道数:
var track_count := ani.get_track_count()
而且,我们当然可以循环:
for track_id in range(0,track_count):
pass
让我们看看,您想知道 属性 正在设置什么。要获取 属性,我们需要获取路径,并从那里提取 属性:
for track_id in range(0,track_count):
var track_path := (ani.track_get_path(track_id) as String).split(":")
var node_path := track_path[0]
var property_path := track_path[1]
附录:
还有另一种方法可以从 NodePath
获取 属性 路径:get_concatenated_subnames
.
或者我们可以得到用get_subname
分隔的元素。
所以这是 属性 名称:
var property_path = ani.track_get_path(track_id).get_subname(0)
我想这是提醒大家注意 AnimationPlayer
可以激活 sub-properties 这一事实的好时机。使用 get_subname(0)
,您会得到 属性,但不会得到 sub-property。
例如,您不必为 position
制作动画,您可以为 position.y
制作动画,您可以通过在曲目名称末尾添加 :y
动画面板。 我会更详细地描述如何做到这一点 。 在这种情况下 get_subname(0)
会给你 position
,但是 get_concatenated_subnames()
会给你你position:y
.
我正在尝试获取正在从动画播放器节点更改的所有属性和值的列表,
但是如何获取动画键正在更改的节点的 属性 名称?
可能是这样的:
var ani=aniplayer.get_animation('running');
for i in range(0,ani.get_track_count()):
var key_idx=ani.track_find_key(i,0,0);
print("property=>",ani.get_key_property(i,key_idx)," new value=>",ani.track_get_key_value(i,key_idx));
假设您有一个动画播放器:
var aniplayer := $AnimationPlayer as AnimationPlayer
你得到一个动画的名字:
var ani := aniplayer.get_animation("running")
如您所知,您可以获得动画的轨道数:
var track_count := ani.get_track_count()
而且,我们当然可以循环:
for track_id in range(0,track_count):
pass
让我们看看,您想知道 属性 正在设置什么。要获取 属性,我们需要获取路径,并从那里提取 属性:
for track_id in range(0,track_count):
var track_path := (ani.track_get_path(track_id) as String).split(":")
var node_path := track_path[0]
var property_path := track_path[1]
附录:
还有另一种方法可以从 NodePath
获取 属性 路径:get_concatenated_subnames
.
或者我们可以得到用get_subname
分隔的元素。
所以这是 属性 名称:
var property_path = ani.track_get_path(track_id).get_subname(0)
我想这是提醒大家注意 AnimationPlayer
可以激活 sub-properties 这一事实的好时机。使用 get_subname(0)
,您会得到 属性,但不会得到 sub-property。
例如,您不必为 position
制作动画,您可以为 position.y
制作动画,您可以通过在曲目名称末尾添加 :y
动画面板。 我会更详细地描述如何做到这一点 get_subname(0)
会给你 position
,但是 get_concatenated_subnames()
会给你你position:y
.