[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)
Unity 在开发的时候如果数据量比较大,或者一部分数据需要存在云端,那么就需要一些数据库
轻量型到大型的包括:
数组-内存存储读取
列表-内存存储读取 List<T> tList = new List<T>();
XML-硬盘存储读取
JSON-硬盘存储读取
Sqlite-轻量数据库(意思就是免安装)-云服务器、硬盘存储读取SQLite 入门教程 - 菜鸟教程
Mysql-关系型数据库(需安装本地或云服务器)-云服务器、硬盘存储读取
Redis-非关系型数据库-轻量级免安装-云服务器、硬盘存储读取
Oracle-系型数据库(需安装本地或云服务器)-云服务器、硬盘存储读取
......

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")]
代码效果:

2. `PackageTable` Unity 内置类:
PackageTable` 类继承自 `ScriptableObject`,这是一个 Unity 提供的特殊类,可以在编辑器中创建和管理数据。
List<ObjectInformation> DatatList` 是一个包含 `ObjectInformation` 对象的列表,用于存储ObjectInformation类型的物品信息。
3. ObjectInformation 自定义类:
ObjectInformation`是一个用于存储单个物品信息的自定义类。
它包含了物品的名称 (`name`)、ID (`ID`) 和描述 (`DescriptObj`) 等字段,用于描述和标识不同的游戏物品。

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


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` 或其他需要的地方访问其中的属性。可以根据具体需求,使用这些数据来配置游戏中的角色属性、加载对应的精灵图像或者其他处理。
相关文章:
[Unity数据管理]自定义菜单创建Unity内部数据表(ScriptableObject)
Unity 在开发的时候如果数据量比较大,或者一部分数据需要存在云端,那么就需要一些数据库 轻量型到大型的包括: 数组-内存存储读取 列表-内存存储读取 List<T> tList new List<T>(); XML-硬盘存储读取 JSON-硬盘存储读取 …...
使用JAVA语言写一个排队叫号的小程序
以下是一个简单的排队叫号的小程序,使用JAVA语言实现。 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner;public class NumberingSystem {public static void main(String[] args) {Queue<String> queue new LinkedList<…...
openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表
文章目录 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表140.1 相关概念140.2 操作步骤140.3 维护建议 openGauss学习笔记-140 openGauss 数据库运维-例行维护-例行维护表 为了保证数据库的有效运行,数据库必须在插入/删除操作后,基于…...
ubuntu20.04使用LIO-SAM对热室空间进行重建
一、安装LIO-SAM 1.环境配置 默认已经安装过ros sudo apt-get install -y ros-Noetic-navigation sudo apt-get install -y ros-Noetic-robot-localization sudo apt-get install -y ros-Noetic-robot-state-publisher 安装 gtsam(如果是18.04的ubuntu直接按照官网配置&…...
如何选学生用的台灯?眼科专家都说好的学生台灯分享!
根据中国眼健康白皮书显示,我国儿童青少年近视总体发生率为53.6%,由此可见如今青少年学生近视的发病率非常高的,且越来越向低龄化发展,不少还在小学阶段的孩子也存在近视的现象。 而造成这个现象的主要原因就是长时间的用眼导致的…...
Linux4.8、环境变量续
个人主页:Lei宝啊 愿所有美好如期而遇 前言 如果对环境变量没有基本的理解,那么建议先看完这篇文章:环境变量https://blog.csdn.net/m0_74824254/article/details/134661113?spm1001.2014.3001.5501 环境变量与本地变量区别 使用export设…...
PTA 7-231 买文具
某小学要购置文具。批发市场中 A 牌的铅笔卖 5 元一支,C 牌的铅笔卖 2 元一支,D 牌的简易铅笔卖1元2只(捆绑销售,只能买偶数只)。 如果想用n元买n支笔,问有多少种买法?(题目保证 n …...
GPTs每日推荐--生化危机【典藏版】
今天给大家推荐一个游戏性质的GPTs,叫做生化危机典藏版,国内点击可玩。 开篇:玩家从末日中醒来。 选择:玩家会遇到各种资源、任务、剧情,需要自行选择相关的分支剧情,一旦选错,无法重选。 结局…...
jenkins-cicd基础操作
1.先决条件 1.首先我个人势在k8s集群中创建的jenkins,部署方法搭建 k8s部署jenkins-CSDN博客 2.安装指定插件. 1.Gitlab plugin 用于调用gitlab-api的插件 2.Kubernetes plugin jenkins与k8s进行交互的插件,可以用来自动化的构建和部署 3.Build Authorizatio…...
ctfhub技能树_web_信息泄露
目录 二、信息泄露 2.1、目录遍历 2.2、Phpinfo 2.3、备份文件下载 2.3.1、网站源码 2.3.2、bak文件 2.3.3、vim缓存 2.3.4、.DS_Store 2.4、Git泄露 2.4.1、log 2.4.2、stash 2.4.3、index 2.5、SVN泄露 2.6、HG泄露 二、信息泄露 2.1、目录遍历 注࿱…...
使用Docker本地部署chatgpt
GitHub上有一个开源的工程ChatGPT-Next-Web,这个工程已经封装好了UI以及和OpenAI的API之间的交互,你要做的事情就是把他部署到本地,并配置好你的OpenAI的sk,然后就可以使用了。那么接下来的文章里,我会手把手教你如何C…...
SpringBoot 集成Netty、WebSocket,5分钟搭建聊天通信系统
文章目录 前言Netty简介使用Netty开发WebSocket应用程序开始项目一、添加依赖二、自定义处理器三、初始化通道加载器四、配置启动器五、添加启动监听器六、启动项目七、演示效果1. 客户端1看到其他客户端上线2. 客户端3收到客户端1发送的消息3. 客户端1收到客户端2下线前言 在…...
LeedCode刷题---双指针问题
顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 双指针简介 常见的双指针有两种形式,一种是对撞指针,一种是左右指针。 对撞指针:一般用于顺序结构中&…...
使用Notepad++编辑器,安装AnalysePlugin搜索插件
概述 是一款非常有特色的编辑器,Notepad是开源软件,Notepad中文版可以免费使用。 操作步骤: 1、在工具栏 ->“插件”选项。 2、勾选AnalysePlugin选项,点击右上角“安装”即可。 3、 确认安装插件 4、下载插件 5、插件已安装…...
胶囊网络实现手写数字分类
文章目录 前言一、完整代码二、修改成自己的数据集总结 前言 胶囊网络的概念可以先行搜索。 一、完整代码 import torch import torch.nn.functional as F from torch import nn from torchvision import transforms, datasets from torch.optim import Adam from torch.util…...
Java零基础-if条件语句
前言 条件语句是编程语言中最基础也是最常用的语句之一,对于初学者来说,掌握好条件语句是学习编程的第一步。本文将以Java开发语言为例,详细介绍Java中的if条件语句及其应用场景。 摘要 本文主要包含以下内容: Java中的if条件…...
中国证券交易所有哪些
中国一共有五个证券交易所,分别是: 1、上海证券交易所。 上海证券交易所,简称为上交所。 ①成立时间:上交所成立于1990年11月26日,同年12月19日开业。 ②规模:截至2020年末,沪市上市公司家数…...
欢迎回到 C++ - 现代 C++(心得-壹)
原文链接欢迎回到 C - 现代 C | Microsoft Learn 这里先是讲了现代c的优势,其相对于其他编程语言有快速、高效。 相对于其他语言,该语言更加灵活,跨平台(硬件平台)性也很强,可以直接访问硬件,虽…...
【Vue3+Ts项目】硅谷甄选 — 搭建后台管理系统模板
一、 项目初始化 一个项目要有统一的规范,需要使用eslintstylelintprettier来对我们的代码质量做检测和修复,需要使用husky来做commit拦截,需要使用commitlint来统一提交规范(即统一提交信息),需要使用pre…...
MATLAB 系统辨识 - 在线估计 - Online Estimation
系列文章目录 MATLAB 模型参考自适应控制 - Model Reference Adaptive Control MATLAB 自抗扰控制 - Active Disturbance Rejection Control 文章目录 系列文章目录前言一、在线参数估计二、使用步骤 前言 在线估计(Online estimation)算法是在物理系…...
Windows Defender完全卸载终极指南:彻底移除系统安全组件的完整解决方案
Windows Defender完全卸载终极指南:彻底移除系统安全组件的完整解决方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.c…...
Quartus中生成与烧录FPGA板载Flash的jic文件全流程解析
1. 为什么需要jic文件? 刚接触FPGA开发的朋友可能会疑惑:为什么编译生成的sof文件不能直接烧录到Flash?这个问题要从FPGA的特性说起。FPGA芯片内部是基于SRAM结构的,这意味着每次断电后配置数据都会丢失。想象一下你正在用电脑写文…...
A-59F 多功能语音处理模组:覆盖全场景人群,让每一次语音都清晰无噪
在门禁对讲、会议扩音、车载通话、导游喊话、监护设备、智能工牌等各类语音设备中,啸叫刺耳、环境嘈杂、回音不断、拾音模糊、通话断续是所有人共同的痛点。一款真正解决问题的核心硬件 ——A-59F 多功能语音处理模组,它集成扩音防啸叫、AI ENC 降噪、AE…...
s2-pro GPU显存优化实践:FP16推理+动态批处理降低30%显存占用
s2-pro GPU显存优化实践:FP16推理动态批处理降低30%显存占用 1. 引言 语音合成技术正在快速改变内容创作的方式,但专业级模型的显存占用问题一直困扰着开发者。Fish Audio开源的s2-pro作为专业级语音合成模型镜像,虽然提供了出色的音质和音…...
农机经销商必看:如何用2000-2020年县级数据精准定位区域市场?
农机经销商区域市场精准定位实战指南:基于2000-2020年县级数据分析 站在山东潍坊的田间地头,老张望着远处几台正在作业的拖拉机陷入了沉思。作为一家中型农机经销商的区域经理,他每年最头疼的就是如何准确预测各县区的农机需求——备货多了占…...
Qwen3.5小尺寸模型开源,9B碾压GPT开源版,消费级显卡就能跑
AI圈又出大新闻了✨ 阿里通义千问3.5系列小尺寸模型正式亮相,直接打破“小模型能力弱”的固有认知,甚至实现了“以小胜大”的逆袭,本地部署门槛直接拉到平民级! 先上核心干货——这次千问3.5一口气推出了4款小尺寸模型,…...
告别复制粘贴!用ABAP类CL_SALV_BS_RUNTIME_INFO自动化获取任意ALV报表数据
告别复制粘贴!用ABAP类CL_SALV_BS_RUNTIME_INFO自动化获取任意ALV报表数据 在SAP系统的日常开发中,ABAP程序员经常需要从各种ALV报表中提取数据用于二次处理。传统的手动复制粘贴方式不仅效率低下,还容易出错。本文将介绍如何利用CL_SALV_BS_…...
焕新Windows资源管理器:打造惊艳毛玻璃视觉体验
焕新Windows资源管理器:打造惊艳毛玻璃视觉体验 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/ExplorerBlurMica 每天面…...
OneMore插件:让OneNote效率倍增的全方位解决方案
OneMore插件:让OneNote效率倍增的全方位解决方案 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 当你在OneNote中处理复杂表格时,是否曾因缺乏…...
Claude官方Skills推荐
Claude官方skills仓库提供了17个skills### 创意设计类 (5个) #### 1. algorithmic-art - 算法艺术生成器**一句话简介**:使用 p5.js 创建带种子随机数和参数探索的算法艺术 **触发条件**:代码艺术、生成艺术、算法艺术、流场、粒子系统#### 2. canvas-de…...
