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
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); |
|
} |
|
}
|
|
|