Unity ScriptableObject的简单使用

尽管我在代码中添加了很多的注释但是我认为解释的还不够清晰,因此,建议配合其他教程使用,或者直接问我

ScriptableObject对象,类似于配置文件一样的东西,可以根据ScriptableObject对象的模板类创建,ScriptableObject对象挂载于普通脚本上,并提供相应的变量

ScriptableObject对象适合储存常量,如果一个变量在运行时会改变,建议将它写在类里

我不知道这种类叫什么名字因此我暂时将它称为ScriptableObject模板类

使用下面这段代码编写一个类后就可以创建相应的ScriptableObject对象了

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

[CreateAssetMenu(menuName = "ZiZhiLei/物品类", fileName = "goods")]//这行添加 //CreateAssetMenu 特性,在编辑器的菜单中创建资源文件,
//在项目选项卡的随便一个文件夹里右键 > 创建然后你就会发现有不一样的东西
//menuName = "ZiZhiLei/物品类"的含义是在”创建“菜单下添加ZiZhiLei类,ZiZhiLei类下面还有”物品 
// 类“(这里的ZiZhiLei是拼音自制类)
//fileName = "goods" 文件被创建时的默认名字
public class GoodsObject : ScriptableObject //我不知道这种类叫什么名字因此我暂时将它称为ScriptableObject模板类
{
    //这个ScriptableObject对象仅提供物品最基础的属性,虽然它里面也可以声明方法也可以被调用,但,似乎限制很大,因此不建议在这里创建很复杂的类

    [Header("数据")]// 如果不清楚特性[Tooltip(" ")]和[Header(" ")] 是什么概念的话可以复制后去unity官方api文档处搜索,我不知道怎么描述这个概念
    [Tooltip("物品的编号")]
    public int GoodsNumber;
    [Tooltip("物品的属性号")]
    public int GoodsType;
    [Tooltip("物品的数量")]
    public int GoodsQuantity;
    [Tooltip("物品的名字")]
    public string GoodsName;
    [Tooltip("物品的数值")]
    public float GoodNumericalValue;//物品数值
    public void UseMedicinalSolution()
    {
        Debug.Log("使用药水");
 
    }

    void Start()
    {
        //Debug.Log("测试他是否会自动运行"); ;//调用一次仅作测试(一般来说他不会运行这里)
    }

}

​

///创建完后大概在这样的位置右键就可以创建ScriptableObject对象了

/调用ScriptableObject对象的测试对象

把ScriptableObject对像挂载到脚本后就可以使用了

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

public class YaoShuiTest : MonoBehaviour
{
    public GoodsObject _ScriptableObject;//挂载组件 这里变量的类型必须和ScriptableObject模/ 
   //板类的名字一样

    void Start()
    {
        Debug.Log("测试获取数据");
        Debug.Log("物品的编号:"+_ScriptableObject.GoodsNumber);
        Debug.Log("物品属性号:" + _ScriptableObject.GoodsType);
        Debug.Log("物品的数量:" +_ScriptableObject.GoodsQuantity);
        Debug.Log("物品名字:" +_ScriptableObject.GoodsName);
        Debug.Log("物品数值" +_ScriptableObject.GoodNumericalValue);
        _ScriptableObject.UseMedicinalSolution();//调用一次仅作测试
    }

    // Update is called once per frame
    void Update()
    {
    }
}

如果对以上的内容有疑问或发现有错误需要改进的地方,欢迎提问与指正

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值