当前位置:   article > 正文

ScriptableObject 的使用_scriptableobject用法

scriptableobject用法

ScriptableObject 的一些特点:

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

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

创建 ScriptableObject (使用菜单创建)

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

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. [CreateAssetMenu(menuName = "ScriptableObject/Weapon")]
  5. public class Weapon : ScriptableObject {
  6. public string weaponName;
  7. public Sprite sprite;
  8. public Color color = Color.white;
  9. public ColliderType colliderType = ColliderType.None;
  10. public enum ColliderType {
  11. None = 0,
  12. Sprite = 1,
  13. Grid = 2
  14. }
  15. }

使用 ScriptableObject

  1. using UnityEngine;
  2. public class GameManager : MonoBehaviour {
  3. public Weapon weapon;
  4. void Start() {
  5. transform.Find("Gun").GetComponent<SpriteRenderer>().sprite = weapon.sprite;
  6. Debug.Log(weapon.name);
  7. }
  8. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/112499
推荐阅读
相关标签
  

闽ICP备14008679号