- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
119 lines
3.8 KiB
C#
119 lines
3.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using VRTK;
|
|
using DG.Tweening;
|
|
|
|
/// <summary>
|
|
/// 普通螺栓交互控制类 触发控制 默认是安装好的 每次激活只能操作一次
|
|
/// </summary>
|
|
public class SimpleLuoShuan : VRUsableStepActionBase
|
|
{
|
|
Vector3 fixedPos;
|
|
[Tooltip("拆下时移动方向")]
|
|
public Vector3 moveLocalAixs;//拆装时移动方向和数值
|
|
[Tooltip("卸下时是否隐藏")]
|
|
public bool unFixedHide;
|
|
|
|
//拆下动画播放完成后隐藏的物体
|
|
public List<GameObject> unFixedHideOthers = new List<GameObject>();
|
|
//ture 时播放安装动画前显示 false播放安装动画完成后显示
|
|
public bool otherActiveOnStartInstall = false;
|
|
|
|
Collider thisCollider;
|
|
|
|
MeshRenderer thisMeshRenderer;//当前物体或子物体的MeshRenderer
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
fixedPos = this.transform.localPosition;
|
|
thisCollider = this.GetComponent<Collider>();
|
|
thisMeshRenderer = this.GetComponentInChildren<MeshRenderer>();
|
|
|
|
}
|
|
|
|
private void UnFixedMoveOver()
|
|
{
|
|
if (unFixedHide)
|
|
{
|
|
thisMeshRenderer.enabled = false;
|
|
if (thisCollider)
|
|
thisCollider.enabled = false;
|
|
}
|
|
unFixedOver?.Invoke();
|
|
unFixedOver = null;//执行一次后清除事件 避免重复触发
|
|
if (otherActiveOnStartInstall)//安装时先显示的,拆的时候动画完了再消失
|
|
{
|
|
for (int i = 0; i < unFixedHideOthers.Count; i++)
|
|
{
|
|
unFixedHideOthers[i].SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
////装上螺丝指令触发
|
|
//protected override void InteractableObjectUnused(object sender, InteractableObjectEventArgs e)
|
|
//{
|
|
// //SetUsable(false);//安装过程中无法再次交互 避免双击
|
|
// //this.transform.DOLocalMove(fixedPos, 1f).OnComplete(FixedMoveOver);//播放安装动画
|
|
//}
|
|
|
|
//安装完成
|
|
private void FixedMoveOver()
|
|
{
|
|
fixedOver?.Invoke();
|
|
fixedOver = null;
|
|
if (!otherActiveOnStartInstall)
|
|
{
|
|
for (int i = 0; i < unFixedHideOthers.Count; i++)
|
|
{
|
|
unFixedHideOthers[i].SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
//激活时若当前螺栓处于隐藏状态则显示螺栓
|
|
public override void Active(ProcessEnum stepName, UnityAction nodeFinishedEvent)
|
|
{
|
|
base.Active(stepName, nodeFinishedEvent);
|
|
if (unFixedHide && thisMeshRenderer.enabled == false)
|
|
{
|
|
thisMeshRenderer.enabled = true;
|
|
if (thisCollider)
|
|
thisCollider.enabled = true;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// VRUsable 主动/同步触发时执行
|
|
/// </summary>
|
|
public override void OnUsed()
|
|
{
|
|
if (!interactableObject.isUsable) return;
|
|
SetUsable(false);//只能触发一次 避免重复触发结束事件
|
|
if (processName == ProcessEnum.teardown)
|
|
{
|
|
this.transform.DOLocalMove(fixedPos + moveLocalAixs, 1f).OnComplete(UnFixedMoveOver);//播放拆卸动画
|
|
if (!otherActiveOnStartInstall)//安装时后显示的,拆的时候先消失
|
|
{
|
|
for (int i = 0; i < unFixedHideOthers.Count; i++)
|
|
{
|
|
unFixedHideOthers[i].SetActive(false);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.transform.DOLocalMove(fixedPos, 1f).OnComplete(FixedMoveOver);//播放安装动画
|
|
if (otherActiveOnStartInstall)
|
|
{
|
|
for (int i = 0; i < unFixedHideOthers.Count; i++)
|
|
{
|
|
unFixedHideOthers[i].SetActive(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|