---ScriptableObject代替单例
和单例一样,在内存是独一份的,是可以被不同的东西读取,需要一些工具链配合。
结构是这样的 startEvent事件->EventListener事件监听->事件数据Event;这样可以跨scene传递信息。
1、用来代替enum
enum的缺点:必须改代码(删改不方便,基于下标)不能存储更多数据。不支持null
2、data scriptableObject
对设计师友好,对git友好,可以被别处监听,打包运输方便
1、如果要监听某个血量,so序列化一个float,随时监听数据变化
2、配置文件,数据和美术分离。相互修改不影响。将多属性脚本集成到so文件中。
3、Event
///
[CreateAssetMenu(menuName="Events.Equipment Select Event Channel")]
public class YYYYYSelectEventChannelSO:ScriptableObject
{
public UnityAction<xxxxItemSO> OnEquipmentSelected;
public void Raise(MerchantItemSo itemSO)
{
OnEquipmentSelected?.Invoke(itemSo)
}
}
//
public class UIxxxItem:MonoBehaviour
{
....
[serializeField] private xxxxItemSO _itemSo;
[serializeField]