unityzgy/Assets/Scripts/GameObjectCtrl/OnBoardEquipCtrl.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

150 lines
3.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//车载物体录屏控制类
public class OnBoardEquipCtrl : MonoBehaviour,IAnimation,IPicked
{
UnityAction playOverEvent;
public UnityAction<Vector3> setOnFloor;//自身控制时 主动放置在地面上
public GameObject EquipGO;//实际装备模型
public void SetInitName(string goName)
{
this.gameObject.name = goName;
if (GroupLearnHelper.isGroup)//分组训练时 添加同步发送和处理类 只有科目二触发当前逻辑
{
this.gameObject.AddComponent<OnboardEqSyncHandler>();
this.gameObject.AddComponent<OnboardEqSyncSender>();
}
}
// Start is called before the first frame update
void Start()
{
//Play(1);
}
public void AddPlayOverEvent(UnityAction action)
{
playOverEvent += action;
}
//被鼠标放下 时自动播放动画
public void PickDown()
{
setOnFloor?.Invoke(this.transform.position);//放置在地面上执行事件
PlayOpenAnimation();
}
//同步他人放置事件
public void SyncSetFloor(Vector3 pos)
{
this.gameObject.SetActive(true);
this.transform.position = pos;
PlayOpenAnimation();
}
//播放展开动画
private void PlayOpenAnimation()
{
this.GetComponent<MeshRenderer>().enabled = false;//放置后隐藏定位框
EquipGO.gameObject.SetActive(true);//放置后显示实际物体 开始播放动画
Play(1);
}
//创建时默认被捡起
public void PickUp()
{
EquipGO.gameObject.SetActive(false);//创建时先定位 不显示实际的物体 只显示定位框
this.GetComponent<MeshRenderer>().enabled = true;//放置后隐藏定位框
}
//播放动画
public void Play(float speed)
{
Speed = speed;
if (speed > 0)
{
Debug.Log("开始播放展开动画");
}
else
{
Debug.Log("开始播放收起动画");
}
}
//动画播放完毕
void AnimatorPlayOver()
{
Debug.Log("车载设备动画播放完成");
playOverEvent?.Invoke();
playOverEvent = null;
}
//模拟动画逻辑 待实际动画替换
float Speed;
private void Update()
{
if (Speed > 0)
{
if (EquipGO.transform.localScale.z < 130)
{
EquipGO.transform.localScale += new Vector3(0, 0, 1);
}
else
{
Speed = 0;
AnimatorPlayOver();
}
}
if (Speed < 0)
{
if (EquipGO.transform.localScale.z > 1)
{
EquipGO.transform.localScale -= new Vector3(0, 0, 1);
}
else
{
Speed = 0;
AnimatorPlayOver();
}
}
}
//该物体放置后不能被再次拾起
public bool CanPickUpByRay()
{
return false;
}
//任何方位都能放下
public bool CanPickDown()
{
return true;
}
//中途无法放弃无需实现
public void StopPick()
{
}
//该物体必须成功放置 不能中间停止
public bool CanStopPick()
{
return false;
}
public GameObject GetGameObject()
{
return this.gameObject;
}
}