```csharp
public abstract class UserChangeInfo : MonoBehaviour
{
public int id;
public Sprite sprite;
private Button btnSend;
protected IChangeInfo changeInfo = null;
private void Start()
{
btnSend = GetComponent<Button>();
btnSend.onClick.AddListener(() =>
{
if (btnSend != null)
return;
//触发事件
EventManager.Instance.EventTrigger<IChangeInfo>("ChangeInfo", changeInfo);
});
}
protected abstract void InitChangeInfo();
public void InitInfo(int id,Sprite sprite)
{
this.id = id;
this.sprite = sprite;
InitChangeInfo();
}
}
public class ChangeRoleInfo : IRoleId
{
public int RoleId { get; set; }
}
public class ChangeWeaponInfo : IWeaponId
{
public int WeaponId { get; set; }
}
```csharp
using System.Collections;
using System.Coll