EditorTool3D/Assets/ZXL/Scripts/UI/Logic/AssetsUILogic.cs

147 lines
4.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using ZXL.Helper;
using ZXL.Manager;
using ZXL.Scripts.UI;
namespace ZXL
{
public class AssetsUILogic : UIBase
{
public Toggle togGS;
public Toggle togGR;
public Toggle togXM;
public Toggle togItem;
public Button btnPush;
public List<AssetItem> items = new List<AssetItem>();
void Awake()
{
togGS = transform.FindChildDeep<Toggle>("togGS");
togGR = transform.FindChildDeep<Toggle>("togGR");
togXM = transform.FindChildDeep<Toggle>("togXM");
togItem = transform.FindChildDeep<Toggle>("togItem");
btnPush = transform.FindChildDeep<Button>("btnPush");
togItem.gameObject.SetActive(false);
btnPush.onClick.AddListener(PushModel);
togGS.onValueChanged.AddListener(OnValueChangedtogGS);
togGR.onValueChanged.AddListener(OnValueChangedtogGR);
togXM.onValueChanged.AddListener(OnValueChangedtogXM);
assetTag = AssetTag.;
}
private void PushModel()
{
var ui = (PushModelUILogic)UIManager.Instance.Open(UIType.PushModelUI);
ui.SetTag(assetTag);
}
private void Start()
{
AssetManager.Instance.addItemAction += GenItemAndSetData;
AssetManager.Instance.initAction += Refresh;
}
private void OnValueChangedtogGS(bool b)
{
assetTag = AssetTag.;
Refresh();
}
private void OnValueChangedtogGR(bool b)
{
assetTag = AssetTag.;
Refresh();
}
private void OnValueChangedtogXM(bool b)
{
assetTag = AssetTag.;
Refresh();
}
List<AssetInfo> assetInfos;
AssetTag assetTag;
void Refresh()
{
assetInfos = AssetManager.Instance.GetAssets(assetTag);
if (assetInfos.Count > items.Count)
{
var count = assetInfos.Count - items.Count;
for (var i = 0; i < count; i++)
{
GenItem();
}
}
HideAll();
for (var i = 0; i < assetInfos.Count; i++)
{
items[i].SetItemData(assetInfos[i]);
items[i].gameObject.SetActive(true);
}
}
void HideAll()
{
foreach (var assetItem in items)
{
assetItem.gameObject.SetActive(false);
}
}
AssetItem GenItem()
{
var go = GameObject.Instantiate(togItem, togItem.transform.parent).gameObject;
go.SetActive(true);
go.name = togItem.name;
var assetItem = go.AddComponent<AssetItem>();
items.Add(assetItem);
return assetItem;
}
void GenItemAndSetData(AssetInfo assetInfo)
{
var assetItem = GenItem();
assetItem.SetItemData(assetInfo);
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Delete))
{
CommonHelper.MessageBox("删除文件", "是否确认删除?", () =>
{
foreach (var assetItem in items)
{
if (assetItem.isSelected)
{
AssetManager.Instance.DeleteAssets(assetItem.assetInfo);
}
}
Refresh();
}, null, CommonHelper.MessageBoxType.);
}
}
void OnDestroy()
{
togGS.onValueChanged.RemoveListener(OnValueChangedtogGS);
togGR.onValueChanged.RemoveListener(OnValueChangedtogGR);
togXM.onValueChanged.RemoveListener(OnValueChangedtogXM);
togGS = null;
togGR = null;
togXM = null;
togItem = null;
}
}
}