/// <summary> /// 道具基类 /// </summary> public abstract partial class Prop : ActivityObject, IPackageItem { public Role Master { get; set; } public int PackageIndex { get; set; } = -1; /// <summary> /// 当被动被道具被拾起时调用 /// </summary> /// <param name="master">拾起该道具的角色</param> protected abstract void OnPickUp(Role master); /// <summary> /// 当被动道具被移除时调用 /// </summary> /// <param name="master">移除该道具的角色</param> protected abstract void OnRemove(Role master); /// <summary> /// 如果道具放入了角色背包中, 则每帧调用 /// </summary> public virtual void PackProcess(float delta) { } public override void Interactive(ActivityObject master) { if (master is Role role) { Pickup(); role.PushProp(this); OnPickUp(role); } } public override CheckInteractiveResult CheckInteractive(ActivityObject master) { if (master is Player) { return new CheckInteractiveResult(this, true, CheckInteractiveResult.InteractiveType.PickUp); } return base.CheckInteractive(master); } public void OnRemoveItem() { } public void OnPickUpItem() { } public void OnActiveItem() { } public void OnConcealItem() { } public void OnOverflowItem() { } }