网演高层钦州
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

104 lines
3.4 KiB

using AX.MessageSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TransferPersonItemFour : BaseToggle {
public Toggle toggle;
//public ToggleGroup toggleGroup;
public UserData data;
public CloneGameObjInfo info;
public Text userName;
public static List<Toggle> toggles = new List<Toggle>(4);
public void SetPersonInfo(CloneGameObjInfo userInfo, UserData userData)
{
info = userInfo;
data = userData;
userName = transform.Find("Label").GetComponent<Text>();
userName.text = data.UserInfo.RealName + "(外)"; //判断室内室外
toggle = GetComponent<Toggle>();
if (toggles.Count > 3)
{
toggle.interactable = false;
}
MessageDispatcher.AddListener("QuadDisplayMore", DisableToggle);
}
public override void OnDestroy()
{
base.OnDestroy();
//删除前先看自己是否被选中
if (toggle.isOn == true)
{
//如果被选中先执行取消选中的逻辑
MessageDispatcher.SendMessage("CancelQuadDisplay", info);//取消相机
toggles.Remove(toggle);
if (toggles.Count < 4)
{
MessageDispatcher.SendMessage("QuadDisplayMore", true); //没有选到4个人,则可以再选中
}
}
MessageDispatcher.RemoveListener("QuadDisplayMore", DisableToggle);
}
public override void RespondFun(bool value)
{
PersonDisplayed(value);
}
/// <summary>
/// 是否分屏显示此人员
/// </summary>
/// <param name="isON"></param>
void PersonDisplayed(bool isON)
{
if (isON) //被选中显示
{
//创建相机
MessageDispatcher.SendMessage("QuadDisplay", info);
toggles.Add(toggle);
if (toggles.Count > 3) //已经选了4个显示人员
{
MessageDispatcher.SendMessage("QuadDisplayMore", false); //禁用其他toggle,不能再选人员了
}
}
else //被取消选中
{
if (toggles.Contains(toggle))
{
//取消相机
MessageDispatcher.SendMessage("CancelQuadDisplay", info);
toggles.Remove(toggle);
if (toggles.Count < 4)
{
MessageDispatcher.SendMessage("QuadDisplayMore", true); //没有选到4个人,则可以再选中
}
}
}
}
void DisableToggle(IMessage obj)
{
var canMore = (bool)obj.Data; //是否可以选中更多
if (canMore == false) //不能再选中了
{
if (toggle && toggle.isOn == false) //如果此按钮没被选中
{
toggle.interactable = false; //则不可以再选中了
}
}
else //可以再选中
{
if (toggle && toggle.interactable == false) //如果当前toggle被禁用
{
toggle.interactable = true; //解禁
}
}
}
IEnumerator BeforeDestroy()
{
//等待取消选中逻辑完成
yield return new WaitForEndOfFrame();
//取消注册消息
MessageDispatcher.RemoveListener("QuadDisplayMore", DisableToggle);
}
}