unityzgy/Assets/Scripts/UIScripts/Teacher/PageShowData/MessagePrefabCtrl.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

126 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
///用于展示数据的预制件控制类
///提供一个Image一定数量Text[] (由预制件决定数量),并提供两个按钮的交互功能(按钮具体功能由外部注册事件决定)
///当前当前用于展示 用户信息和学习记录
public class MessagePrefabCtrl : MonoBehaviour
{
public Text[] MessTexts;
public Image icon;
public MessType messType = MessType.user;
private User userMsg;
//string eventTriggerID;
public Button button1;
public Button button2;
int id=-1;//记录数据标识
private void Awake()
{
if (messType == MessType.user)
{
button1 = this.transform.Find("Button_remove")?.GetComponent<Button>();
button2 = this.transform.Find("Button_editor")?.GetComponent<Button>();
}
}
void Start()
{
switch (messType)
{
//case MessType.result:
// this.transform.Find("Button_remove").GetComponent<Button>().onClick.AddListener(DeleteResult);
// this.transform.Find("Button_editor").GetComponent<Button>().onClick.AddListener(ShowRecord);
// break;
case MessType.user:
this.transform.Find("Button_remove").GetComponent<Button>().onClick.AddListener(DeleteUser);
this.transform.Find("Button_editor").GetComponent<Button>().onClick.AddListener(EditUser);
break;
default:
break;
}
}
/// <summary>
/// 显示文字信息
/// </summary>
/// <param name="index">该信息所在的标识</param>
/// <param name="msgs"></param>
public void SetTextMsg(int id, string[] msgs)
{
this.id = id;
if (msgs.Length != MessTexts.Length)
{
Debug.LogError("传入的文字信息和展示文字组件数量不符合!");
return;
}
for (int i = 0; i < MessTexts.Length; i++)
{
MessTexts[i].text = msgs[i];
}
}
/// <summary>
/// 显示图标
/// </summary>
/// <param name="iconSprite"></param>
public void SetImageSprite(Sprite iconSprite)
{
icon.sprite = iconSprite;
}
/// <summary>
/// 注册两个按钮事件 注册时自动清空之前注册的事件
/// </summary>
/// <param name="id">预制件的标识 用于事件触发时分辨触发者的身份</param>
/// <param name="button1Click"> 按钮1的触发事件</param>
/// <param name="button2Click">按钮2的触发事件</param>
public void RegisteButtonEvent(UnityAction<int> button1Click, UnityAction<int> button2Click)
{
//注册前清空上次的事件 避免触发异常情况
button1.onClick.RemoveAllListeners();
button2.onClick.RemoveAllListeners();
//eventTriggerID = id;
button1.onClick.AddListener(() => button1Click.Invoke(id));
button2.onClick.AddListener(() => button2Click.Invoke(id));
}
//编辑用户
private void EditUser()
{
//this.transform.root.GetComponentInChildren<UserManagerPanel>().EditStudent(userMsg,this);
EventCenter.Instance.EventTrigger<User,MessagePrefabCtrl>("EditUser", userMsg,this);
}
//删除用户
private void DeleteUser()
{
//EventCenter.Instance.EventTrigger<string>("DeleteUser", userMsg.user);
this.GetComponentInParent<EnquireConntentCtrl>().DeleteOneStMessage(userMsg.user,this.gameObject);//删除一条数据需要更新面板
DBManager.Instance.DeleteUser(userMsg);
}
//显示账户信息
public void SetMessage(User studentMess,Sprite iconSprite=null)
{
userMsg = studentMess;
if(iconSprite!=null)
icon.sprite = iconSprite;
MessTexts[0].text = studentMess.user;
MessTexts[1].text = studentMess.password;
}
private void OnDisable()
{
id = -1;
}
}