Unity 剧情类游戏基础脚本

article/2025/10/4 9:03:12

本文主要用于给新人提供实现剧情类游戏的基本思路。

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

然后是一个很重要的

[System.Serializable]

它的作用是使得在检查器窗口来看到我i们自己创建的类从而实现在检查器直接进行故事剧情的书写(当然如果你写个脚本通过excle 表进行写也行)

然后写一个剧情数据类

    public class StoryData{public string story;//故事文本public string[] choicestory;//选择的故事文本;public int[] nextindices;// 下一段剧情的索引数据;}

然后是 故事控制类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class StoryController : MonoBehaviour
{public void OnChoiceMade(int index){switch (index) // 根据索引判断玩家做出了什么选择{case 1: // 如果玩家选择了第一个选项Debug.Log("You chose to 1"); // 输出日志信息break;case 2: // 如果玩家选择了第二个选项Debug.Log("You chose to 2"); // 输出日志信息break;case 3: // 如果玩家选择了第三个选项Debug.Log("You chose to 3"); // 输出日志信息break;case 4: // 如果玩家选择了第四个选项Debug.Log("You chose to 4."); // 输出日志信息break;default:break;}}
}

他的作用是报错了方便查找同时 还可以写其他功能实现扩展。

 接下来是剧情展示类

讲一下思路

 

public class StoryDisplay : MonoBehaviour
{public StoryData[] storyDatas; // 剧情数据数组public Text storyText; // 显示故事文本的UI组件public Button[] choiceButtons; // 显示选择按钮的UI组件数组private int currentIndex = 0; // 当前剧情索引private StoryController storyController; // 剧情控制器void Start(){storyController = FindObjectOfType<StoryController>(); // 查找场景中唯一存在的StoryController组件Refresh(); // 刷新界面}void Refresh(){if (currentIndex >= 0 && currentIndex < storyDatas.Length) // 如果当前索引有效{StoryData data = storyDatas[currentIndex]; // 获取当前段落对应的数据对象storyText.text = data.storyText; // 显示故事文本for (int i = 0; i < choiceButtons.Length; i++) // 遍历所有按钮{Button button = choiceButtons[i];if (i < data.choiceTexts.Length) // 如果有对应的选择文本{button.gameObject.SetActive(true); // 激活按钮button.GetComponentInChildren<Text>().text = data.choiceTexts[i]; // 显示选择文本在按钮上int nextIndex = data.nextIndices[i];button.onClick.RemoveAllListeners();button.onClick.AddListener(() => OnClickChoiceButton(nextIndex));}else{button.gameObject.SetActive(false);}}}else{storyText.text = "The End.";}}void OnClickChoiceButton(int nextIndex){currentIndex = nextIndex; // 更新当前索引storyController.OnChoiceMade(currentIndex); // 通知剧情控制器玩家做出了选择Refresh(); // 刷新界面}
}

为什么发文助手总说让我提供代码 我这不都已经发了一堆了么。。。。。


http://chatgpt.dhexx.cn/article/sYCFqom2.shtml

相关文章

Unity脚本(三)

视频教程&#xff1a;https://www.bilibili.com/video/BV12s411g7gU?p128 目录 Time Prefab Animation Time Time.time&#xff1a;自应用程序启动以来&#xff0c;每帧的开始时间&#xff08;只读&#xff09; Time.deltaTime&#xff1a;每帧间隔&#xff0c;或说完…

NS版暗黑破坏神3金手指开发教程(1)

最近重温了NS版的暗黑三&#xff0c;因为空闲时间实在有限&#xff0c;面对这样一款刷刷刷的经典作品&#xff0c;为了护肝以及更爽快的游玩&#xff0c;同时为了弥补自己丢失已久的汇编技能&#xff0c;加上NS版暗黑三最初版本里有带完整调试信息的elf文件&#xff0c;于是有了…

NS版暗黑破坏神3金手指开发教程(3)

上一节&#xff0c;我们初步介绍了修改人物力量的方法&#xff0c;也大致说了一下hexworkshop和IDA的简单操作&#xff0c;这一节&#xff0c;我们将进阶到复杂度高一些的人物全属性修改&#xff0c;搜索方法基本跟上一节的力量公式一样&#xff0c;需要一定的耐心和细心&#…

Unity入门3——脚本基础

一、生命周期函数 ​ 所有继承 MonoBehavior 的脚本&#xff0c;最终都会挂载到 GameObject 游戏对象上 ​ 生命周期函数就是该脚本对象依附的 GameObject 对象从出生到消亡整个生命周期中 ​ 会通过反射自动调用的一些特殊函数 ​ Unity 帮助我们记录了一个 GameObject 对象依…

4.实现csdn暗黑模式-油猴脚本实战1

4.实现csdn暗黑模式-油猴脚本实战1 Start 前面的文章&#xff0c;对油猴脚本做了基础的介绍。今天来我们来实战一下&#xff0c;编写一个有实际作用的油猴脚本。 如果我希望我的csdn是暗黑模式&#xff0c;怎么办&#xff1f; 看我表演&#xff1f; 注意&#xff01;本文仅用…

6. unity之脚本

1. 说明 当整个游戏运行起来之后,我们无法再借助鼠标来控制物体,此时可以使用脚本来更改物体的各种姿态,驱动游戏的整体运动逻辑。 2. 脚本添加 首先在Assets目录中,新创建一个Scripts文件夹,在该文件内右键鼠标选择创建脚本选项,即可创建一个脚本文件,可命名为Sampl…

Unity入门03——Unity脚本

1.脚本基本规则 1.设置编程用工具 2.基本规则 1.创建规则 不在VS中创建脚本了可以放在Assets文件夹下的任何位置&#xff08;建议同一文件夹管理)类名和文件名必须一致,不然不能挂载(因为反射机制创建对象&#xff0c;会通过文件名去找Type)建议不要使用中文名命名没有特殊…

你可能还不知道的暗黑3常用小技巧

以下是上次活动热心坛友发来的游戏小技巧&#xff0c;经过我的搜集和加入一些自己和朋友们分享的经验整合编辑而成。再次感谢大家的热心参与。都非常实用哟&#xff01;&#xff01;&#xff01; 操作篇 1&#xff0c;如果你不希望朋友进入你的游戏时&#xff0c;按ESC&#xf…

jq linux获取数组长度,数组长度用size还是length

数组长度用length属性。length是js的原生方法&#xff0c;可获取元素的个数和对象的长度&#xff1b;而size()函数是jQuery方法&#xff0c;只能作用于对象上&#xff0c;用于返回当前jQuery对象封装的元素个数。获取一个数组的长度或者参数的长度&#xff0c;只能用lenth。 本…

delphi 获取数组长度_数组的介绍及使用

JavaScript 中的数组常用于在单个变量中存储多个值。数组就是一组数据的集合&#xff0c;在内存中表现为一段连续的内存地址(保存在堆内存)。创建数组的目的就是为了保存更多的数据。 数组概念和语法 概念&#xff1a;数组是一个特殊变量&#xff0c;一次可以容纳多个值。 特点…

js 填充数组长度

js 填充的方法有以下三种 const array new Array(100).fill()Array.from(new Array(100).keys())let arr Array.from({length:100}, (_v,k) > k);如果下面有这么一个场景&#xff0c;你在接口中获取了一个数组对象&#xff0c;如下&#xff1a; [{id:1},{id:2},{id:3},{…

c语言中文网 数组的长度,数组的长度如何获取?

获取数组长度的方法&#xff1a; 1、在java与JavaScript中可以使用“数组名.length”方法获取数组长度 javaScriptvar arrnew Array(); arr[0] "a"; arr[1] "b"; var lenarr.length; java 2、c语言中可以使用关键字 sizeof获取数组长度 用 sizeof 可以获…

c语言 json数组长度,js 获取json数组里面数组的长度

作为一个前端页面开发者第一次处理json数据,遇到了‘js 获取json数组里面数组的长度’?竟然不知道 json没有.length属性(真是要嘲讽下自己),少壮不努力老大徒伤悲啊!以前都是去寻求男朋友帮助,但是最近尝试自己去解决遇到的问题。 我遇到的问题是这样的:***.jsp结尾的页面…

vue 获取数组长度_Vue数据响应式

响应式是一种设计模式。 页面响应式布局就是根据页面缩放大小调整布局,数据响应式就是代码根据数据变化作出反应。 深入响应式原理 — Vue.js​cn.vuejs.org 简单来说,当我们把一个 JavaScript 对象传入 Vue 实例作为data选项时,Vue将遍历此对象所有的 property,使用Object…

Javascript 获取数组长度, 对象成员个数, 字符串数

1.应用场景 主要用于获取数组长度, 对象成员个数, 字符串数. 2.学习/操作 Q1.Javascript怎么得到数组长度(也就是数组的元素个数)? Q2.Javascript怎么获取对象的成员个数? Q1 你肯定想到了array.length!? 那么我们来测试一下下面这个例子. <script type"text/jav…

html获取数组最小值,javascript如何获取数组长度?

JavaScript中可以通过length方法来获取字符串的长度。数组的 length 属性总是比数组中定义的最后一个元素的下标大 1。 定义和用法 length 属性可设置或返回数组中元素的数目。 语法arrayObject.length 说明 数组的 length 属性总是比数组中定义的最后一个元素的下标大 1。对于…

JS:数组Array的使用方法及获取数组的长度length

对象分成三种&#xff1a; 内建对象宿主对象自定义对象 数组Array也是一个对象&#xff0c;它和普通的对象功能类似&#xff0c;也是用来存储一些值的。 不同的是普通对象是使用字符串作为属性名的&#xff0c;而数组是使用数字来作为索引操作元素。 数组中的索引是从0开始的…

JavaScript学习1.1

1.注意: 1. JS是区分大小写的&#xff0c;如&#xff1a;classname和ClassName是不一样的。同时注意方法、属性、变量等的大小写吆。 2. JS中的字符、符号等一定要在英文状态下输入吆。 3.var myarrnew Array(); //定义数组 注意&#xff1a; 1.创建的新数组是空数组&#xf…

21 JS数组的基本操作——数组长度

文章目录 1、数组长度1、1 获取数组长度1、2 修改数组长度 2、创建时指定数组长度3、练习&#xff1a;输出数组的长度 1、数组长度 1、1 获取数组长度 数组名.length 1、2 修改数组长度 在利用length属性指定数组长度时&#xff0c;有以下三种情况&#xff1a; &#xff…

mysql中重复数据的查询

准备数据如下:student 表 一、在学生表里,查询name相同且age不同的数据(只需将要比较的字段查询出来,name和age相同的会去重) select a.name,a.age from student a join student b on a.name = b.name and a.age <> b.age group by a.name,a.age;结果如下: 注意…