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

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.mzph.cn/news/891286.shtml

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

相关文章

如何修复 WordPress 中的“Error establishing a database connection”问题

如何修复 WordPress 中的“Error establishing a database connection”问题 在使用 WordPress 建站时&#xff0c;如果你看到“Error establishing a database connection”的提示&#xff0c;不要慌张。这通常意味着网站无法连接到数据库&#xff0c;因此无法显示内容。下面…

Linux内核 -- Netlink多播组消息处理技术

Netlink多播组消息处理技术文档 概述 Netlink是一种用户态与内核态之间通信的机制&#xff0c;支持单播和多播模式。多播组允许多个用户态进程接收同一组的广播消息&#xff0c;广泛应用于网络事件、系统通知等场景。 本文将详细介绍如何在内核态发送多播组消息&#xff0c;…

SQL 基础教程 - SQL SELECT 语句

SQL SELECT DISTINCT 语句 SELECT DISTINCT 语句用于返回唯一不同的值。 在表中&#xff0c;一个列可能会包含多个重复值&#xff0c;有时您也许希望仅仅列出不同&#xff08;distinct&#xff09;的值。 DISTINCT 关键词用于返回唯一不同的值。 SQL SELECT DISTINCT 语法 …

鸿蒙-三角形

Row() {}.leftTriangle(); // 向下 Styles function downTriangle() { .width(0) .height(0) .borderWidth({ left: 20, right: 20, top: 40 }) .borderColor({ left: Color.Transparent, right: Color.Transparent, top: Color.Red }) } // 向上 Styles function upTr…

使用Anaconda管理R语言环境,并使用Jupyter Notebook编写R语言

文章目录 Anaconda中创建R环境0 官方教程存在的问题1 创建R语言环境2 安装常用包集合&#xff1a;r-essentials3 用VS Code的Jupyter插件写R 相信一直使用Python搞数据分析、机器学习的同学们会习惯使用 Anaconda管理不同的Python环境&#xff0c;并使用Jupyter Notebook&#…

3.5mm耳机接口硬件连接

结构 以最复杂的结构为例 简单的结构无非就是没有MIC&#xff08;麦克风&#xff09;接口 上图的5就是Detect的作用 上面这两款产品都为3.5mm的音频插座&#xff0c;图一 为连接4节的音频座&#xff0c;而且有两个开关&#xff0c;1接地&#xff0c;2接MIC&#xff0c;3接左声…

第25天:信息收集-项目系统一键打点资产侦察企查产权空间引擎风险监测利器部署

#知识点 1、信息收集-项目推荐-自动化环境部署 2、信息收集-项目推荐-自动化资产收集管理 一、自动化-网络空间-Yakit&TscanPlus 项目地址&#xff1a;https://www.yaklang.com/ 项目地址&#xff1a;https://github.com/TideSec/TscanPlus 集成Fofa、Hunter、Quake、Zoome…

plantuml的picoweb无法渲染分页图表的问题

1. 背景 使用plantuml自带的picoweb在渲染分页图表时&#xff0c;vscode无法换页&#xff0c;但是使用plantuml官网渲染则没问题。查看plantuml官网的picoweb的说明&#xff0c;picoweb只是plantuml服务的最小实现。因此考虑可能是plantuml服务不全导致的上述问题。 2. docke…

vue3学习笔记(11)-组件通信

1.props 父传子 子传夫 父传子 接收用defineProps([]) 空字符串也是假 2.自定义事件 $event:事件对象 ref定义的数据在模板里面引用的时候可以不用.value 3.子传父 宏函数 触发事件 声明事件 defineEmits() 挂载之后3s钟触发 4.命名 肉串命名 5.任意组件通信 mitt pubs…

1 数据库(下):多表设计 、多表查询 + SQL中的with查询语法(MySQL8.0以后版本才支持这种新语法)+ 数据库优化(索引优化)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、多表设计1 多表设计-概述2 三种多表关系一对多&#xff08;多对一&#xff09;&#xff08;1&#xff09;无外键约束&#xff08;逻辑外键&#xff09;&…

【翻译】优化加速像素着色器执行的方法

中文翻译 在回复我的 Twitter 私信时,我遇到了一个关于如何提高像素/片段着色器执行速度的问题。这是一个相当广泛的问题,具体取决于每个 GPU/平台和游戏内容的特性,但我在本帖中扩展了我“头脑风暴”式的回答,以便其他人也觉得有用。这不是一份详尽的清单,更像是一个高层…

Supermap iClient Webgl 粒子特效案例-消防场景

作者&#xff1a;Lzzzz 前言 WebGL 粒子特效的应用场景非常广泛&#xff0c;几乎可以在任何需要丰富视觉效果或动态表现的地方看到其身影。通过灵活运用颗粒系统&#xff0c;开发者可以创造出引人入胜的用户体验和视觉表现。 一、效果展示 二、实现步骤 1&#xff0c;构建…

Eclipse常用快捷键详解

文章目录 Eclipse常用快捷键详解一、引言二、编辑快捷键三、选择和移动快捷键四、行操作快捷键五、搜索和导航快捷键六、调试快捷键七、重构快捷键八、其他快捷键九、使用案例场景一&#xff1a;代码编写代码示例 场景二&#xff1a;代码调试场景三&#xff1a;代码重构代码示例…

【MATLAB】股票(和指数)数据下载--雅虎财经

文章目录 一、构建请求二、响应解读及整理2.1 响应2.2 数据提取和保存 三、通用函数3.1 函数3.2 调用示例 四、雅虎财经股票、指数代码4.1 指数4.2 股票 五、GUI界面、可执行程序 雅虎2021年就退出中国了&#xff0c;你懂的。 能下载股票等数据的财经网站、软件也很多。我写着玩…

Unity 使用UGUI制作卷轴开启关闭效果

视频效果 代码 using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options;public class JuanZhou : MonoBehaviour {[SerializeField]private …

利用JavaScript实现顺序九宫格抽奖

顺序九宫格思路&#xff1a; 1.先获取抽奖按钮,方便给按钮绑定点击事件2.初始化下标k0,用于表示当前选中的索引下标&#xff0c;后续滚动起来会一直刷新3.获取大div盒子4.获取盒子里所有div元素&#xff0c;充当一个数组&#xff0c;后续可以通过下标来访问每个小div&#xff0…

Bash 脚本教程

注&#xff1a;本文为 “Bash 脚本编写” 相关文章合辑。 BASH 脚本编写教程 as good as well于 2017-08-04 22:04:28 发布 这里有个老 American 写的 BASH 脚本编写教程&#xff0c;非常不错&#xff0c;至少没接触过 BASH 的也能看懂&#xff01; 建立一个脚本 Linux 中有…

4d human学习笔记

能让人物动起来&#xff1a; https://github.com/DSaurus/Human4DiT/tree/master https://github.com/DSaurus/Human4DiT 数据集&#xff1b; GitHub - eth-ait/4d-dress: Official repository for CVPR 2024 highlight paper 4D-DRESS: A 4D Dataset of Real-world Human C…

NPM组件包 vant部分版本内嵌挖矿代码

Vant 是一个轻量、可定制的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 Vant 2 版本&#xff1a;https://vant-ui.github.io/vant/v2/#/zh-CN/home V…

Kafka安全优化文档:漏洞修复到安全加固

文章目录 1.1.漏洞修复1.1.1.Apache Kafka反序列化漏洞1.1.2.pm2-kafka代码执行漏洞1.1.3.Apache Kafka安全绕过漏洞1.1.4.Apache Kafka Distribution - Schema Repository跨站请求伪造漏洞1.1.5.Apache Kafka输入验证错误漏洞的补丁1.1.6.Apache Kafka信息泄露漏洞1.1.7.Apach…