32 lines
915 B
GDScript3
32 lines
915 B
GDScript3
|
|
''' 此Resource定义了一系列的Prop可能需要的预设的简单Effect,如果有更复杂的需求,应该重写State的OnEnter
|
|||
|
|
'''
|
|||
|
|
@tool
|
|||
|
|
@icon("uid://cw1yyc4oeph85")
|
|||
|
|
extends Resource
|
|||
|
|
class_name ReedPropEffect
|
|||
|
|
|
|||
|
|
##用来选择Effect作用的对象
|
|||
|
|
@export var effect_target_type: EffectTargetType = ETT_Owner.new()
|
|||
|
|
##用来选择Effect作用的具体效果
|
|||
|
|
@export var effect_apply_type: EffectApplyType = EAT_SetValue.new()
|
|||
|
|
|
|||
|
|
## 运行时缓存
|
|||
|
|
var _cached_old_value: Variant
|
|||
|
|
|
|||
|
|
##应用效果
|
|||
|
|
func apply(owner: Node, prop_comp: Node, ctx: Dictionary) -> void:
|
|||
|
|
var target := _resolve_target(owner, prop_comp)
|
|||
|
|
if target == null:
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
if not effect_apply_type:
|
|||
|
|
return
|
|||
|
|
|
|||
|
|
effect_apply_type.apply(target)
|
|||
|
|
|
|||
|
|
##获取到组件或对象
|
|||
|
|
func _resolve_target(owner: Node, prop_comp: Node) -> Object:
|
|||
|
|
if effect_target_type == null:
|
|||
|
|
return null
|
|||
|
|
return effect_target_type.get_effect_target(owner,prop_comp)
|