2022-04-02 21:46:10 +08:00
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
using UnityEditor;
|
|
|
|
|
using UnityEngine.Video;
|
|
|
|
|
using UnityEngine.InputSystem;
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
public class CGAdministrator : UnitySingleton<CGAdministrator>
|
|
|
|
|
{
|
|
|
|
|
// Start is called before the first frame update
|
|
|
|
|
//CG管理员相关代码
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
private RawImage rawImage;
|
|
|
|
|
[Tooltip("记录这个场景中的所有CG,要加的话直接扩容数组,并往新的CG里面加内容")][SerializeField]
|
|
|
|
|
private ACG[] CGs;
|
|
|
|
|
private ACG playingCG;//正在播放的CG,因为invoke无法传参而存在
|
|
|
|
|
void Start()
|
|
|
|
|
{
|
|
|
|
|
rawImage = GetComponent<RawImage>();
|
|
|
|
|
rawImage.CrossFadeAlpha(0,0,true);//为了淡入显示,必须先把它的阿尔法值降到0,对吧?
|
|
|
|
|
//把rawImage的颜色的透明度变为0
|
|
|
|
|
//rawImage.color = new Color(rawImage.color.r, rawImage.color.g, rawImage.color.b, 1);
|
|
|
|
|
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
//好像可以让它自己找到所有CG
|
|
|
|
|
CGs = new ACG[transform.childCount];
|
|
|
|
|
for(int i = 0; i < transform.childCount; i++)
|
|
|
|
|
{
|
|
|
|
|
CGs[i] = transform.GetChild(i).GetComponent<ACG>();
|
|
|
|
|
}
|
|
|
|
|
//
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
//
|
|
|
|
|
//CallACG("鸟");
|
|
|
|
|
//
|
|
|
|
|
}
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
//外部呼叫CG用,传入你要调用的CG名
|
|
|
|
|
public void CallACG(string CGName)
|
|
|
|
|
{
|
|
|
|
|
//当外面叫了一个CG,传入CG名
|
|
|
|
|
foreach(ACG CG in CGs)
|
|
|
|
|
{
|
|
|
|
|
//找到这个CG
|
|
|
|
|
if(CG.CGName.Equals(CGName))
|
|
|
|
|
{
|
|
|
|
|
Debug.Log("正在显示CG:"+CG.name);
|
|
|
|
|
rawImage.texture = CG.texture;//把CG的内容装载上
|
|
|
|
|
rawImage.CrossFadeAlpha(1,1f,true);//淡入显示CG
|
|
|
|
|
playingCG = CG;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CG.GetComponent<VideoPlayer>().Play();//开始播放这个CG
|
|
|
|
|
//FindObjectOfType<PlayerInput>().SwitchCurrentActionMap("NullMap");//使玩家无法操作
|
|
|
|
|
}
|
|
|
|
|
catch(System.NullReferenceException)
|
|
|
|
|
{
|
|
|
|
|
Debug.Log("播放CG失败,看看赋值对不对");
|
|
|
|
|
}
|
|
|
|
|
Invoke("StopIt",CG.time);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
//改变标记,使管理员意识到CG该停了
|
|
|
|
|
private void StopIt(){rawImage.CrossFadeAlpha(0f,1f,true);//淡出CG
|
|
|
|
|
playingCG.OnEnded();}//告诉这个CG它结束了,然后触发它的结束事件
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
public float GetPlayingCGTime()
|
|
|
|
|
{
|
|
|
|
|
return playingCG.time;
|
|
|
|
|
}
|
2022-04-01 23:05:52 +08:00
|
|
|
|
|
2022-04-02 21:46:10 +08:00
|
|
|
|
}
|