ScriptableObject 的使用

ScriptableObject 的一些特点:

1.ScriptableObject 数据存储在 asset 资源文件中,类似 unity 材质或纹理资源,如果在运行时改变了它的值则就是真的改变了
2.ScriptableObject 资源在实例化时是被引用,而非像 Prefab 或其他 GameObject 一样是复制(实际场景中会存在多个 GameObject),所有 ScriptableObject 可以节省 memory

3.传统保存数据并调用可使用 playerprefs、json、xml,而 ScriptableObject  提供了一种新的更便捷与友好的方法(通过 inspector 可视化的编辑需要存储的数据)

创建 ScriptableObject (使用菜单创建)

注意:如果 ScriptableObject 中使用自定义类型,则需要为自定义类加上 [System.Serializable] 属性

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(menuName = "ScriptableObject/Weapon")]
public class Weapon : ScriptableObject {

	public string weaponName;
	public Sprite sprite;
	public Color color = Color.white;
	public ColliderType colliderType = ColliderType.None;

	public enum ColliderType {
		None = 0,
		Sprite = 1,
		Grid = 2
	}

}

使用 ScriptableObject

using UnityEngine;

public class GameManager : MonoBehaviour {

	public Weapon weapon;

	void Start() {
		transform.Find("Gun").GetComponent<SpriteRenderer>().sprite = weapon.sprite;
		Debug.Log(weapon.name);
	}

}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值