- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
102 lines
2.6 KiB
Plaintext
102 lines
2.6 KiB
Plaintext
using XFramework;
|
|
using UnityEngine.UI;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
|
|
//多级杆
|
|
public class MultipoleRod : MonoBehaviour
|
|
{
|
|
Transform trans_rodroot;
|
|
Transform trans_first;
|
|
Transform trans_second;
|
|
[SerializeField]
|
|
[Tooltip("连接目标点")]
|
|
Transform targetpoint;
|
|
[SerializeField]
|
|
[Tooltip("完全收缩时二级突出一级部分的长度")]
|
|
float compressLength;
|
|
[SerializeField]
|
|
[Tooltip("完全拉伸时重叠部分长度")]
|
|
float stretchLength;
|
|
UnityAction<DisLimitType> TriggerLimitAction;
|
|
[SerializeField]
|
|
float firstRobLength;
|
|
[SerializeField]
|
|
float secondRobLength;
|
|
|
|
[SerializeField]
|
|
float maxLength;
|
|
[SerializeField]
|
|
float minLength;
|
|
|
|
SimpleDoor simpleDoor;
|
|
|
|
//能够阻止杆件收缩的插销
|
|
AutoFixedChaXiao chaXiao;
|
|
void Awake()
|
|
{
|
|
InitEvent();
|
|
}
|
|
|
|
void InitEvent()
|
|
{
|
|
|
|
trans_rodroot =this.transform.FindChildTrans("Trans_RodRoot").GetComponent<Transform>();
|
|
trans_first =this.transform.FindChildTrans("Trans_First").GetComponent<Transform>();
|
|
//firstRobLength = trans_first.GetComponent<MeshFilter>().mesh.bounds.size.z;
|
|
trans_second = this.transform.FindChildTrans("Trans_Second").GetComponent<Transform>();
|
|
//secondRobLength = trans_second.GetComponent<MeshFilter>().mesh.bounds.size.z;
|
|
maxLength = firstRobLength + secondRobLength - stretchLength;
|
|
minLength = firstRobLength + compressLength;
|
|
simpleDoor = targetpoint.GetComponentInParent<SimpleDoor>();
|
|
chaXiao = this.GetComponentInChildren<AutoFixedChaXiao>();
|
|
chaXiao.FixatorStateChanged += ChaXiao_FixatorStateChanged;
|
|
}
|
|
|
|
private void ChaXiao_FixatorStateChanged(FixatorStateEnum arg0)
|
|
{
|
|
switch (arg0)
|
|
{
|
|
case FixatorStateEnum.Locking:
|
|
simpleDoor.KeepNowAngle();
|
|
break;
|
|
case FixatorStateEnum.UnLocking:
|
|
simpleDoor.ReturnDefultLimit();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void FixedUpdate()
|
|
{
|
|
trans_rodroot.transform.LookAt(targetpoint.position);
|
|
float distance= Vector3.Distance(trans_rodroot.position, targetpoint.position);
|
|
if (distance >= maxLength)
|
|
{
|
|
TriggerLimitAction?.Invoke(DisLimitType.TooLong);
|
|
}
|
|
else if(distance<=minLength)
|
|
{
|
|
TriggerLimitAction?.Invoke(DisLimitType.TooShort);
|
|
}
|
|
distance = Mathf.Clamp(distance, minLength, maxLength);
|
|
float targetValue = distance - minLength+ compressLength;
|
|
trans_second.localPosition = trans_first.localPosition + new Vector3(0,0, targetValue);
|
|
if (chaXiao)
|
|
chaXiao.rodPos = trans_second.localPosition.z;
|
|
//Debug.Log(trans_second.localPosition.z);
|
|
}
|
|
|
|
|
|
}
|
|
//长度超限
|
|
public enum DisLimitType
|
|
{
|
|
//过长
|
|
TooLong,
|
|
|
|
//过短
|
|
TooShort,
|
|
}
|