以下是这几天自制的对话系统
制作这个对话系统的目的其实比较可笑,因为我不会用unity商店里可以找到的任何一个对话插件,包括但不限于Yarn Spinner,fungus之类的插件,然后跟着教程做我又坚持不下来,所以最后只能行下下策,自己做一个,我本人又是一个菜鸟,制作又不好,只能凑合做一个用用。
脚本核心为这个:
这个脚本负责这个场景内所有对话的管理
character:可以改为数组形式存放更多角色立绘摆放位置(我偷懒只准备了三个),
Conversation:是对话框,
conversationManList:对话列表,顾名思义就是这个场景里对话的顺序,
Choos:如果对话末尾出现选项则勾选,
Show:选项页面,
Where:对话结束后前往的下一个场景下表(如果有选项可以不填),
BackG:对话最后一张需要替换别的背景可以修改这里(我制作的时候就考虑了游戏结束一种情况),
Ima:需要替换的背景,
IsFallDown:这里就是一开始说的需要结尾替换背景的选项勾选这个,
SetIngShow:这个是设置界面,
BGMShow:BGM预制体放这;
一下是实现脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class ConversationManager : MonoBehaviour
{
public GameObject Charat1;
public GameObject Charat2;
public GameObject Charat3;
public GameObject Conversation;//这里控制对话开启
public GameObject[] ConversationManList;//对话列表,记录这一幕对话组成,即对话顺序
private int ConverNumber;//控制对话顺序
public bool Choos;
public GameObject Show;//这个是如果对话结束有选择则会显示选择
public int Where;
public Image BackG;//背景更换,失败场景
public Sprite Ima;
public bool IsFallDown;
private GameObject BackButton;
private GameObject SetButton;
public GameObject SetIngShow;
public GameObject BGMShow;
// Start is called before the first frame update
void Start()
{
ConverNumber = 0;
BackG = GameObject.Find("BackGround").GetComponent<Image>();
BackButton = GameObject.Find("Back");
BackButton.GetComponent<Button>().onClick.AddListener(GoBack);
SetButton = GameObject.Find("Cont");
SetButton.GetComponent<Button>().onClick.AddListener(Seting);
}
// Upd