Unity3D仿星露谷物语开发12之创建道具列表

news2025/1/5 7:56:46

1、目标

道具是游戏的核心部分,道具包括你可以拾取的东西,你可以使用的工具和你能种的东西等。

本节就是创建道具的信息类。同时了解ScriptableObject类的使用。

2、创建道具枚举类

修改Assets -> Scripts -> Enums.cs脚本,

新增如下内容:

public enum ItemType
{
    Seed,  // 种子
    Commodity, // 商品
    Watering_tool, // 浇水工具
    Hoeing_tool, // 锄头
    Chopping_tool, // 砍伐工具
    Breaking_tool, // 破碎工具
    Reaping_tool, // 收割工具
    Collecting_tool, // 收集工具
    Reapable_scenary, // 可达到场景
    Furniture, // 家具
    none,
    count // 计数,记录列表中东西的个数
}

整个Enums.cs脚本如下:

public enum ToolEffect
{
    none, 
    watering
}

public enum Direction
{
    up,
    down,
    left,
    right,
    none
}

public enum ItemType
{
    Seed,  // 种子
    Commodity, // 商品
    Watering_tool, // 浇水工具
    Hoeing_tool, // 锄头
    Chopping_tool, // 砍伐工具
    Breaking_tool, // 破碎工具
    Reaping_tool, // 收割工具
    Collecting_tool, // 收集工具
    Reapable_scenary, // 可达到场景
    Furniture, // 家具
    none,
    count // 计数,记录列表中东西的个数
}

3、创建道具详情类

在Assets -> Scripts -> Item下新增ItemDetails.cs脚本。


using UnityEngine;

[System.Serializable]
public class ItemDetails 
{
    public int itemCode;
    public ItemType itemType;
    public string itemDescription;
    public Sprite itemSprite;
    public string itemLongDescription;
    public short itemUseGridRadius;
    public float itemUseRadius;
    public bool isStartingItem;
    public bool canBePickedUp;
    public bool canBeDropped;
    public bool canBeEaten;
    public bool canBeCarried;    
}
  • [System.Serializable]:使用[System.Serializable]属性标记的类,其实例可以在Unity编辑器中进行可视化编辑;被序列化和反序列化,便于数据保存和读取。
  • itemUseGridRadius:比如一定距离的树木被砍伐,一定距离的物品可以被拾取,用整个属性来确定这个物品的有效网格距离。
  • itemUseRadius:如果不是基于网格的物品,比如环境中的草等是基于距离的,使用当前属性。

4、创建道具列表类

(1)创建SO_ItemList脚本

在Scripts -> Item下创建SO_ItemList脚本。

using System.Collections.Generic;
using UnityEngine;

[CreateAssetMenu(fileName ="so_ItemList", menuName ="Scriptable Objects/Item/Item List")]
public class SO_ItemList : ScriptableObject
{
    [SerializeField]
    public List<ItemDetails> itemDetails;
}

(2)ScriptableObject说明

ScriptableObject是什么?

  • Unity提供的一个数据配置存储基类,它可以用来保存大量数据得数据容器
  • 是一个类似MonoBehaviour的基类,要想使用它,需要写个脚本去继承ScriptableObject。继承自ScriptableObject的脚本无法挂载到游戏物体上,因为它不是继承自MonoBehaviour。
  • ScriptableObject类的实例会被保存成资源文件(.asset文件),和预设体、材质球、音频文件等类似,都是一种资源文件,存放在Assets文件夹下。

作用是什么?

  • 编辑模式下数据持久化
  • 配置文件(配置游戏中的数据)
  • 数据复用(多个对象公用一套数据,不用clone数据)

使用方法?参考示例如下:

[CreateAssetMenu(fileName = "BulletData", menuName = "ScriptableObject/子弹数据", order = 0)]
public class BulletData : ScriptableObject
{
    public float speed;
    public float damage;
}

fileName: 表示数据资源文件创建出来的文件名

menuName:表示在Assets / Create 下的名字

order:表示在Assets / Create 下的位置顺序

(3)创建ScriptableObject实例

在Assets目录下创建如下目录结构:

在Assets -> Scriptable Object Assets -> Item下右击创建so_ItemList对象列表。

创建24个实例。

24个Element罗列如下:

From small acorns do large oak trees grow.One day this humble acorn could be a towering giant!

A juicy,fat,ripe pumpkin.It makes great soup as well as a scary Halloween face!

Juicy fresh corn - try it roasted on a BBQ smothered with butter and a health conscious sprinkling of salt and pepper!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2269739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为配置 之 RIP

简介&#xff1a; RIP&#xff08;路由信息协议&#xff09;是一种广泛使用的内部网关协议&#xff0c;基于距离向量算法来决定路径。它通过向全网广播路由控制信息来动态交换网络拓扑信息&#xff0c;从而计算出最佳路由路径。RIP易于配置和理解&#xff0c;非常适用于小型网络…

使用new String(“yupi”)语句在Java中会创建多少个对象?

在 Java 编程中&#xff0c;字符串的处理是一个常见且重要的部分。理解字符串对象的创建和内存管理对于编写高效和优化的代码至关重要。当我们在 Java 中使用 new String("yupi") 语句时&#xff0c;实际上会涉及到多个对象的创建。本文将详细解释这一过程&#xff0…

vue使用el-select下拉框自定义复选框

在 Vue 开发中&#xff0c;高效且美观的组件能极大地提升用户体验和开发效率。在vue中使用elementplus 的 el-select下拉框实现了一个自定义的多选下拉框组件。 一、代码功能概述 这段代码创建了一个可多选的下拉框组件&#xff0c;通过el-select和el-checkbox-group结合的方…

Python基于EasyOCR进行路灯控制箱图像文本识别项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着城市化进程的加快&#xff0c;智能城市建设成为了现代社会发展的重要方向。路灯作为城市基础设…

TDengine 新功能 VARBINARY 数据类型

1. 背景 VARBINARY 数据类型用于存储二进制数据&#xff0c;与 MySQL 中的 VARBINARY 数据类型功能相同&#xff0c;VARBINARY 数据类型长度可变&#xff0c;在创建表时指定最大字节长度&#xff0c;使用进按需分配存储&#xff0c;但不能超过建表时指定的最大值。 2. 功能说明…

使用位操作符实现加减乘除!

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;使用位操作符实现加减乘除 发布时间&#xff1a;2025.1.1 隶属专栏&#xff1a;C语言 目录 位操作实现加法运算&#xff08;&#xff09;原理代码示例 位操作实现减法运算&#xff08;-&#xff09;原理代码示例 位…

基于SpringBoot的题库管理系统的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…

MATLAB条件判断(switch-case-otherwise-end型)

在条件判断时&#xff0c;遇到很多个条件&#xff0c;如果再用 i f − e l s e if-else if−else语句就显得很繁琐&#xff0c;所以我们可以用 s w i t c h switch switch来解决 结构&#xff1a; 判断对象可以为数字&#xff0c;也可以为字符 如图&#xff1a; 注意&#x…

windows文件夹自定义右键调用powershell完成7zip加密打包

准备powershell脚本 2. regedit的路径是&#xff1a;计算机\HKEY_CLASSES_ROOT\Directory\shell\&#xff0c;在此项目下新增子项目diy_command\command&#xff0c;command的数据值为powershell D:\windowsProjects\directory_diy.ps1 %1 效果&#xff0c;点击后进入和power…

从0入门自主空中机器人-2-1【无人机硬件框架】

关于本课程&#xff1a; 本次课程是一套面向对自主空中机器人感兴趣的学生、爱好者、相关从业人员的免费课程&#xff0c;包含了从硬件组装、机载电脑环境设置、代码部署、实机实验等全套详细流程&#xff0c;带你从0开始&#xff0c;组装属于自己的自主无人机&#xff0c;并让…

C语言:位段

位段的内存分配: 1. 位段的成员可以是 int unsigned int signed int 或者是char &#xff08;属于整形家族&#xff09;类型 2. 位段的空间上是按照需要以4个字节&#xff08; 类型 int &#xff09;或者1个字节&#xff08; char &#xff09;的方式来开辟的。 3. 位段涉及…

【OceanBase】利用 OceanBase 向量检索能力构建文档智能问答小助手

文章目录 一、实验环境说明二、前期准备工作2.1 安装 Python 3.9 和 pip2.2 安装 Poetry2.3 安装并启动Docker(可选)2.4 安装 MySQL 客户端2.5 注册阿里云百炼账号并开通服务获取 API Key 三、构建智能问答小助手3.1 部署 OceanBase 集群3.1.1 方式一&#xff1a;使用 OBCloud …

http报头解析

http报文 http报文主要有两类是常见的&#xff0c;第一类是请求报文&#xff0c;第二类是响应报文&#xff0c;每个报头除了第一行&#xff0c;都是采用键值对进行传输数据&#xff0c;请求报文的第一行主要包括http方法&#xff08;GET&#xff0c;PUT&#xff0c; POST&#…

Lucene 漏洞历险记:修复损坏的索引异常

作者&#xff1a;来自 Elastic Benjamin Trent 有时&#xff0c;一行代码需要几天的时间才能写完。在这里&#xff0c;我们可以看到工程师在多日内调试代码以修复潜在的 Apache Lucene 索引损坏的痛苦。 做好准备 这篇博客与往常不同。它不是对新功能或教程的解释。这是关于花…

如何提升可视化大屏的用户体验?

一、什么是可视化大屏的用户体验 可视化大屏的用户体验是指用户在使用大屏幕可视化系统时所感受到的整体体验。这包括系统的易用性、交互性、视觉效果、信息展示方式等方面。一个好的可视化大屏用户体验应该能够让用户轻松地获取所需的信息&#xff0c;快速理解数据&#xff0…

overscroll-behavior-解决H5在ios上过度滚动的默认行为

1. 问题 开发H5的过程中&#xff0c;经常会有android和ios两边系统需要兼容的情况。在ios上一直有个问题是当H5内容触及到页面顶部或底部时&#xff0c;还是可以被人为的往下或往下拉动界面。当然可能有的情况是比较适用的&#xff0c;比如你往下拉动&#xff0c;然后在导航栏…

【无线传感网】无线传感器网络拓扑控制技术

文章目录 拓扑控制的意义影响整个网络的生存时间减小节点间通信干扰&#xff0c;提高网络通信效率为路由协议、时间同步提供基础影响数据融合弥补节点失效的影响 拓扑控制的设计目标能量消耗覆盖度连通性算法的分布式程度网络延迟&#x1f6a9;干扰和竞争对称性鲁棒性和可扩展性…

使用pandas把数据库中的数据转成csv文件

使用pandas把数据库中的数据转成csv文件 1、效果图 2、流程 1、连接数据库,获取数据 2、把一些中文字符转成gbk,忽略掉无法转化的 3、把数据转成csv 3、代码 import pymysql import pandas as pddef get_database(databasename):

点击锁定按钮,锁定按钮要变成解锁按钮,然后状态要从待绑定变成 已锁定(升级版)

文章目录 1、updateInviteCodeStatus2、handleLock3、InviteCodeController4、InviteCodeService5、CrudRepository 点击锁定按钮&#xff0c;锁定按钮要变成解锁按钮&#xff0c;然后状态要从待绑定变成 已锁定&#xff1a;https://blog.csdn.net/m0_65152767/article/details…

活动报名系统源码:JAVA同城服务系统活动报名同城圈子商家商城城市代理躲猫猫

JAVA同城服务系统&#xff1a;打造多元化社交与娱乐新体验 在数字化时代&#xff0c;同城服务系统已成为连接城市生活的重要桥梁。我们精心打造的JAVA同城服务系统&#xff0c;不仅融合了活动报名、同城圈子、商家商城、城市代理等多重功能&#xff0c;还特别加入了创新的“躲…