
*修复若干Bug 场景:【序章-家中】 1.创建事件【当打完码且完成对话】,即切换场景之前需要做的事。 2.编写事件【当打完码且完成对话】的逻辑。 3.在打完码且完成对话后,向记录者发信,改变演出名为【序章-战场】 场景【序章-战场】 4.完善【假电报机】逻辑 场景【序章-家中】 5.创建对话【回忆之后的对话】,并填充内容。 6.创建事件【完成回忆后对话之后】 7.创建事件【多态:序章-家中-已打码】,并完成逻辑。 *为了调试方便,我把【序章-战场】中的电话线系统作了调整,现在不用修直接和假电报机交互就能进入下一个场景。(修了反而不能正常进入下一个场景)
45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class PolymorphicAdministrator : MonoBehaviour
|
|
{
|
|
// Start is called before the first frame update
|
|
//多态管理员,旨在对同一个场景进行不同的初始化,以节省空间
|
|
private IndexRecoder indexRecoder;//记录者物体
|
|
[Tooltip("多态管理员,此参数记录着“这个场景有几种状态,这几个状态的名称分别是什么”,这样的信息,请键入不同的演出名")]
|
|
public string[] statesNames;
|
|
|
|
[Tooltip("多态管理员,此参数记录着“当场景为此状态时,应该执行怎样的初始化呢?”这样的信息,请拖入事件")]
|
|
public Event[] statesEvents;
|
|
void Start()
|
|
{
|
|
indexRecoder = FindObjectOfType<IndexRecoder>();//找到记录者物体
|
|
TransfromToAState();
|
|
}
|
|
|
|
//初始化为某个多态中的一种,根据是记录者中的演出名
|
|
private void TransfromToAState()
|
|
{
|
|
for(int i = 0; i < statesNames.Length; i++)
|
|
{
|
|
//遍历每一种多态名
|
|
if(indexRecoder.stageName.Equals(statesNames[i]))//如果是第i种多态
|
|
{
|
|
try
|
|
{
|
|
Debug.Log("尝试载入多态: "+ statesEvents[i].name);
|
|
statesEvents[i].OnCall();//则执行对应事件进行场景的初始化
|
|
|
|
}
|
|
catch(System.NullReferenceException e)
|
|
{
|
|
Debug.Log("此多态没有被赋予事件,可能是场景本身初始状态就是多态中的一种,所以不需要初始化");
|
|
e.ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|