[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)

这篇具有很好参考价值的文章主要介绍了[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity 在开发的时候如果数据量比较大,或者一部分数据需要存在云端,那么就需要一些数据库

轻量型到大型的包括:

数组-内存存储读取

列表-内存存储读取   List<T> tList = new List<T>();

XML-硬盘存储读取

JSON-硬盘存储读取

Sqlite-轻量数据库(意思就是免安装)-云服务器、硬盘存储读取SQLite 入门教程 - 菜鸟教程

Mysql-关系型数据库(需安装本地或云服务器)-云服务器、硬盘存储读取

Redis-非关系型数据库-轻量级免安装-云服务器、硬盘存储读取

Oracle-系型数据库(需安装本地或云服务器)-云服务器、硬盘存储读取

......[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject),Unity进阶课程,lucene,全文检索,搜索引擎

 

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject),Unity进阶课程,lucene,全文检索,搜索引擎

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


[CreateAssetMenu(menuName = "Leoyang/DataUnity", fileName = "CreatData")]
public class PackageTable : ScriptableObject
{
    public List<ObjectInformation> DatatList=new List<ObjectInformation>();
}
[System.Serializable]
public class ObjectInformation
{

    public string name;
    public int ID;
    public string DescriptObj;
}

这段代码是针对 Unity 引擎的脚本,用于创建包含物品信息的数据表。

1. CreateAssetMenu 属性:


   这个属性是 Unity 引擎的特殊标记,用于在 Unity 菜单中创建该类型的对象。`menuName` 指定了在菜单中的位置,`fileName` 指定了在创建对象时的默认文件名。

[CreateAssetMenu(menuName = "Leoyang/DataUnity", fileName = "CreatData")]

代码效果:

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject),Unity进阶课程,lucene,全文检索,搜索引擎

2. `PackageTable` Unity 内置类:


PackageTable` 类继承自 `ScriptableObject`,这是一个 Unity 提供的特殊类可以在编辑器中创建和管理数据。
List<ObjectInformation> DatatList` 是一个包含 `ObjectInformation` 对象的列表,用于存储ObjectInformation类型的物品信息。

3. ObjectInformation 自定义类:


ObjectInformation`是一个用于存储单个物品信息的自定义类。
 它包含了物品的名称 (`name`)、ID (`ID`) 和描述 (`DescriptObj`) 等字段,用于描述和标识不同的游戏物品。

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject),Unity进阶课程,lucene,全文检索,搜索引擎

这段代码的作用是创建一个可以在 Unity 编辑器中创建和管理的数据表,其中可以存储多个物品的信息,比如名称、ID 和描述等。通过 `PackageTable` 类的 `DatatList` 可以轻松地添加、编辑和删除 `ObjectInformation` 类的对象,这些对象可以在游戏中使用,比如用于管理背包物品或者游戏中的其他数据。

创建完毕后就可以使用了,存储信息

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject),Unity进阶课程,lucene,全文检索,搜索引擎

[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject),Unity进阶课程,lucene,全文检索,搜索引擎

4.ScriptableObject类详细讲解

`ScriptableObject` 是 Unity 引擎中的一个特殊类,它允许在编辑器中创建可序列化的对象,用于存储数据、配置游戏资源、或者创建自定义编辑器工具等。下面详细介绍它的属性、功能和一个简单的案例:

- **可序列化:** `ScriptableObject` 类的对象可以被序列化和存储在 Unity 资源文件中,能够在不同场景和关卡之间进行持久化。
  
- **无需挂载到 GameObject:** 与 MonoBehaviour 不同,ScriptableObject 并不需要附加到场景中的游戏对象上,因此它们不受场景的影响,更适合用于存储数据或资源。

### 功能:

- **数据存储和配置:** 可以用来保存游戏的数据,例如存储关卡信息、物品属性、对话内容等。也可用于配置资源,如配置文件、技能数据、AI行为树等。

- **可编辑:** 可在 Unity 编辑器中创建、编辑和管理对象的属性和数据。这使得开发人员可以方便地调整数据而无需直接修改代码。

- **易于扩展:** 可以创建自定义编辑器工具,利用 `ScriptableObject` 创建可重复使用的资源,提高了代码的复用性。

### 案例:

以下是一个简单的 `ScriptableObject` 示例,演示了如何创建和使用它:
 

using UnityEngine;

[CreateAssetMenu(fileName = "NewCharacterData", menuName = "Character Data")]
public class CharacterData : ScriptableObject
{
    public string characterName;
    public int health;
    public int attackDamage;
    public Sprite characterSprite;
}

- 这个示例中的 `CharacterData` 类继承自 `ScriptableObject`。
- 使用 `[CreateAssetMenu]` 属性,指定了在 Unity 菜单中创建该类型对象时的位置和名称。
- `CharacterData` 类定义了一些角色的属性,如角色名、生命值、攻击伤害和角色的精灵图像。

通过这种方式,可以在 Unity 编辑器中创建名为 Character Data 的资源文件,包含了角色的属性信息。然后可以在游戏中通过引用这些 `CharacterData` 对象来获取或配置角色属性,例如在游戏中创建角色、设置角色的生命值和攻击力等。

一旦你创建了 `ScriptableObject` 类型的数据对象并设置了其中的属性,你可以通过代码在游戏中访问这些属性。以下是一种简单的方法:

假设你已经创建了一个名为 `CharacterData` 的 `ScriptableObject` 类,里面包含了角色的属性,比如:

using UnityEngine;

[CreateAssetMenu(fileName = "NewCharacterData", menuName = "Character Data")]
public class CharacterData : ScriptableObject
{
    public string characterName;
    public int health;
    public int attackDamage;
    public Sprite characterSprite;
}

然后,在你的代码中,你可以通过如下方式获取这些数据:


public class CharacterManager : MonoBehaviour
{
    public CharacterData characterData; // 这个是你创建的 CharacterData 对象

    void Start()
    {
        // 示例:输出角色的名字和生命值
        Debug.Log("Character Name: " + characterData.characterName);
        Debug.Log("Character Health: " + characterData.health);
        
        // 可以根据需要使用角色数据做其他操作,比如改变角色的属性、加载对应的角色模型等。
    }
}


 

这段代码展示了如何在 `CharacterManager` 类中获取 `CharacterData` 对象的属性。通过将 `CharacterData` 对象赋值给 `characterData` 属性,你可以在 `Start` 或其他需要的地方访问其中的属性。可以根据具体需求,使用这些数据来配置游戏中的角色属性、加载对应的精灵图像或者其他处理。文章来源地址https://www.toymoban.com/news/detail-765051.html

到了这里,关于[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库实验 实验一 数据库创建与管理

    注:此内容仅仅只是记录成长与分享学习,不能保证绝对正确 实验一 数据库的创建与管理 实验日期:   2022   年 3 月   25 日  星期   五     实验地点:   宿舍      一 实验目的 1. 熟练掌握创建、删除数据库。 2. 查看和修改数据库属性。 二 实验要求 1. 请大家务必动

    2024年02月01日
    浏览(67)
  • SQL 数据库语句- 创建和管理数据库

    SQL CREATE DATABASE 语句用于创建一个新的 SQL 数据库。 以下 SQL 语句创建了一个名为 \\\"testDB\\\" 的数据库: 通过这个简单的语句,你可以成功地创建一个名为 \\\"testDB\\\" 的数据库。记得在实际应用中,你可能需要添加其他选项,比如指定字符集、校对规则等,以满足具体需求。 SQL DRO

    2024年02月05日
    浏览(81)
  • 数据管理系统-week6-数据定义语言(DDL)

    本节课主要学习如何创建表,删除表,更改表,以及一道简单的练习题,提供给大家学习与参考 创建表语句使用给定的名称、给定的属性名称和类型以及给定的逻辑一致性约束创建一个新的关系表 Example:

    2024年01月18日
    浏览(55)
  • Docker 的数据管理、容器互联、镜像创建

    目录 一、数据管理 1.数据卷 2. 数据卷容器 二、容器互联(使用centos镜像) 三、Docker 镜像的创建 1.基于现有镜像创建 1.1首先启动一个镜像,在容器里修改 1.2将修改后的容器提交为新的镜像,需使用该容器的id号创建新镜像 2.基于本地模板创建 2.1下载模板文件生成镜像  2

    2024年02月16日
    浏览(60)
  • openGauss学习笔记-09 openGauss 简单数据管理-创建数据库

    数据库安装完成后,默认生成名称为postgres的数据库。您需要自己创建一个新的数据库。 9.1 语法格式 创建数据库 查看数据库 使用“l”用于查看已经存在的数据库。 使用 “c + 数据库名” 进入已存在数据库。 修改数据库 删除数据库 9.2 参数说明 database_name 要创建、修改或

    2024年02月16日
    浏览(59)
  • openGauss学习笔记-74 openGauss 数据库管理-创建和管理视图

    74.1 背景信息 当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。 视图与基本表不同,不是物理上实际存在的,是一个虚表。数据库中仅存放视图的定义,而不存放视图对应的数据,这

    2024年02月07日
    浏览(56)
  • MySQL-创建和管理表:基础知识、创建和管理数据库、创建表、修改表、重命名表、删除表、清空表、拓展

    注:此为笔者学习尚硅谷-宋红康MySQL的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:尚硅谷!!! 1.1 一条数据存储的过程 存储数据是处理数据的第一步 。只有正确地把数据存储起来,我们才能进行有效的处理和分析。否则,只能是一团

    2024年04月11日
    浏览(96)
  • Docker 的数据管理与Dockerfile 镜像的创建

    ------------------Docker 的数据管理--------------------- 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见

    2024年02月07日
    浏览(40)
  • 一、创建数据库和管理(基础使用命令)

    1、创建数据库命令 语法格式: CREATE {DATABASE|SCHEMA}[IF NOT EXISTS] 数据库名称 [[DEFAULT] CHARACTER SET 字符集名 |[DEFAULT] COLLATE 校对规则名] [] 内的为可选项   { | }  内的为二选一        MySQL 不区分大小写 IF NOT EXISTS :在创建数据库前进行判断,只有该数据库目前尚不存在,才执行C

    2024年02月04日
    浏览(42)
  • 【unity数据交互】数据管理类_PlayerPrfs封装包

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity数据存储 🎶 PlayerPrefs—存储主方法 🎶 PlayerPrefs—普通数据类型的反射存储 🎶 PlayerPrefs—泛型List的反射存储 🎶 PlayerPrefs—泛型

    2024年02月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包