
场景【序章-家中】 1.修改对话角色参数【父亲】的名字改为父亲 2.修改对话角色参数【主角】的名字为“我” 场景【序章-战场】 1.使导弹生成与远处,无伤害判定 2.修改导弹生成高度,避免其露出个头来 3.修改父亲骨骼,目前其手部存在问题 场景【第一关】 1.调整图层解决遮挡问题 2.修改导弹生成高度,避免其露出个头来 3.增加导弹出现频率 场景【第二关】 1.注释了死亡 2.调节了角色图层
108 lines
3.8 KiB
C#
108 lines
3.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UnityEditor;
|
|
|
|
public class TelephoneLine : Interactive
|
|
{
|
|
//电话线类,控制每一处断裂的电话线
|
|
// Start is called before the first frame update
|
|
private float allNeedTime;
|
|
private float hasReparedTime = 0f;
|
|
private bool isReparing = false;
|
|
[SerializeField]
|
|
private bool isRepared = false;
|
|
IndexRecoder indexRecoder;
|
|
private float process = 0f;
|
|
[Tooltip("特殊电话线用,拖入这个电话线修好后的事件")]
|
|
public Event endEvent;
|
|
|
|
private GameObject spark;//获取火花的对象
|
|
|
|
void Start()
|
|
{
|
|
indexRecoder = FindObjectOfType<IndexRecoder>();
|
|
allNeedTime = indexRecoder.TelephoneNeedTime;
|
|
m_interface = GameObject.Find("Canvas").transform.Find("修电话线界面").gameObject;
|
|
spark = transform.GetChild(0).gameObject;
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if(!isRepared&&isReparing)//如果没有修复并且正在修复
|
|
{
|
|
//在修复的话,每帧累计时间,并更新进度
|
|
hasReparedTime += Time.deltaTime;
|
|
process = hasReparedTime/allNeedTime;
|
|
//检查是否满了
|
|
if(process >= 1f)
|
|
{
|
|
spark.SetActive(false);//将火花对象隐藏
|
|
isRepared = true;//标记自己已经被修好
|
|
FindObjectOfType<AllLinesInfo>().OKCount++;//找到总线信息,给好了的电话线+1
|
|
Debug.Log("满了,这个修好了");
|
|
OnStopReparing();//关下UI
|
|
GetComponent<SpriteRenderer>().enabled = true;//打开修好的的图片素材
|
|
FindObjectOfType<M_Player>().HasReparedATelephone();//告诉玩家自己被修好,打断修理动画
|
|
if(endEvent != null) endEvent.OnCall();//如果有结束事件,那触发一下结束事件
|
|
}
|
|
//还要更新UI上的进度条
|
|
for(int i = 0; i < m_interface.transform.childCount; i++)
|
|
if(m_interface.transform.GetChild(i).tag == "进度条")
|
|
m_interface.transform.GetChild(i).GetComponent<Image>().fillAmount = process;
|
|
}
|
|
}
|
|
|
|
public override void OnCall()
|
|
{
|
|
//象征着按下交互键了,如果这个还没被修好,即刻开始修复电话线
|
|
if(!isRepared)
|
|
{
|
|
m_interface.SetActive(true);//打开UI
|
|
m_interface.transform.position = Camera.main.WorldToScreenPoint(transform.position);
|
|
StartRepareTheTelephoneLine();
|
|
}
|
|
}
|
|
|
|
private void StartRepareTheTelephoneLine()
|
|
{
|
|
isReparing = true;
|
|
}
|
|
|
|
public override void StopRepareTheTelephoneLine()
|
|
{
|
|
isReparing = false;
|
|
OnStopReparing();
|
|
}
|
|
|
|
//当此电话线修好了
|
|
private void OnStopReparing()
|
|
{
|
|
m_interface.SetActive(false);//关闭修电话线的UI
|
|
}
|
|
|
|
public bool HasTheBePrepared(){return isRepared;}
|
|
|
|
|
|
// //制造一个只读的变量,不要动这些
|
|
// public class ReadOnlyAttribute : PropertyAttribute{}
|
|
// [CustomPropertyDrawer(typeof(ReadOnlyAttribute))]
|
|
// public class ReadOnlyDrawer : PropertyDrawer
|
|
// {
|
|
// public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
|
// {
|
|
// return EditorGUI.GetPropertyHeight(property, label, true);
|
|
// }
|
|
|
|
// public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
|
// {
|
|
// GUI.enabled = false;
|
|
// EditorGUI.PropertyField(position, property, label, true);
|
|
// GUI.enabled = true;
|
|
// }
|
|
// }
|
|
// //
|
|
}
|