unityzgy/Assets/Scripts/ThisProjectTool/VRCtrl/RepairSub/AutoFixedChaXiao.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

107 lines
2.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using VRTK;
using XFramework.NetOuter;
//安装在支撑杆上触发松开 松开弹回尝试自锁的插销
[RequireComponent(typeof(VRTK_InteractableObject))]
public class AutoFixedChaXiao : VRUsableStepActionBase
{
//use触发时 解锁位置
public Vector3 unFixedPos;
//锁上后的位置
public Vector3 FixedPos;
//use放弃后 若不满足回弹条件 被挡住时的位置
public Vector3 tryFixedPos;
//影响回弹的杆件位置
public float rodPos;
//能够回弹的杆件位置区间 X是较小值 Y较大值
public Vector2[] canFixedPos;
FixatorStateEnum fixatorState= FixatorStateEnum.UnLocking;
//插销状态变化事件
public event UnityAction<FixatorStateEnum> FixatorStateChanged;
public FixatorStateEnum FixatorState
{
get {
return fixatorState;
}
private set {
if (fixatorState != value)
{
fixatorState = value;
FixatorStateChanged?.Invoke(fixatorState);
}
else
{
fixatorState = value;
}
}
}
bool unUsed=true;
// Start is called before the first frame update
// Update is called once per frame
void FixedUpdate()
{
//if (Input.GetKey(KeyCode.Space))
//{
// unUsed = false;
// this.transform.localPosition = unFixedPos;
// FixatorState = FixatorStateEnum.UnLocking;
//}
//if (Input.GetKeyUp(KeyCode.Space))
//{
// unUsed = true;
// this.transform.localPosition = tryFixedPos;
//}
if (fixatorState == FixatorStateEnum.UnLocking && unUsed)//打开状态 未使用手柄触发 尝试上锁
{
float clampValue = 0;
for (int i = 0; i < canFixedPos.Length; i++)
{
clampValue = Mathf.Clamp(rodPos, canFixedPos[i].x, canFixedPos[i].y);
if (clampValue == rodPos)//在允许锁定的范围内
{
FixatorState = FixatorStateEnum.Locking;
this.transform.localPosition = FixedPos;
}
}
}
}
public override void UnUsed()
{
unUsed = true;
this.transform.localPosition = tryFixedPos;
}
public override void OnUsed()
{
unUsed = false;
this.transform.localPosition = unFixedPos;
FixatorState = FixatorStateEnum.UnLocking;
}
public override void Active(ProcessEnum stepName, UnityAction nodeFinishedEvent)
{
base.Active(stepName, nodeFinishedEvent);
Debug.Log("插销激活");
}
public override void UnActive(ProcessEnum stepName)
{
base.UnActive(stepName);
Debug.Log("插销退出激活状态");
}
}