UI逻辑更改

This commit is contained in:
lq 2024-11-27 16:54:09 +08:00
parent 9d79de6f6e
commit 2833129a25
5 changed files with 1324 additions and 8597 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

View File

@ -1,123 +0,0 @@
fileFormatVersion: 2
guid: 1cfc105de79baef44a26945245beddc3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMasterTextureLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -44,7 +44,7 @@ public class Panel : MonoBehaviour
private List<GameObject> filteredPeopleList = new List<GameObject>(); // 存储筛选后的人员列表
private GameObject selectedPerson = null; // 当前选中的角色
public SelectedInfo selectedInfo;
private Dictionary<string, List<SelectedInfo>> sceneDataDictionary = new Dictionary<string, List<SelectedInfo>>();//不同的场景存取不同的人员数据
public Dictionary<string, List<SelectedInfo>> sceneDataDictionary = new Dictionary<string, List<SelectedInfo>>();//不同的场景存取不同的人员数据
// Start is called before the first frame update
void Start()
@ -87,6 +87,10 @@ public class Panel : MonoBehaviour
{
sceneDataDictionary[sceneName] = new List<SelectedInfo>();
}
else
{
Debug.Log("没有选场景");
}
// 将当前选中的人员信息添加到对应场景的人员列表中
sceneDataDictionary[sceneName].Add(selectedInfo);

View File

@ -6,21 +6,119 @@ using UnityEngine.UI;
//板块信息
public class ManagerPanel : MonoBehaviour
{
public List<PlateInfo> platesList = new List<PlateInfo>();
public Panel panelScript; // 引用Panel类的实例
public Transform managerPanelContent; // 管理面板中用于显示人员的UI容器
public Transform panelContent;
public GameObject personItemPrefab; // 用于显示人员信息的UI项
public GameObject scenePanelPrefab;
[Header("组件")]
public Text sceneText;
public Text nameText;
public Text dutyText;
[Header("数据")]
private GameObject currentSelectedItem = null; // 当前选中的项
private Vector3 originalScale; // 记录选中项的原始大小
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//SetPlate();
}
//更新板块人员信息
void SetPlate()
public void SetPlate()
{
// 清空当前显示
foreach (Transform child in managerPanelContent)
{
Debug.Log("Destroying: " + child.gameObject.name);
Destroy(child.gameObject);
}
// 遍历字典中的每个场景生成对应的UI项
foreach (var sceneEntry in panelScript.sceneDataDictionary)
{
CreateScenePanel(sceneEntry.Key, sceneEntry.Value); // 为每个场景调用封装的方法
}
}
}
// 根据场景名称和对应的人员列表生成场景面板和人员项
private void CreateScenePanel(string sceneName, List<SelectedInfo> peopleList)
{
// 为每个场景生成一个新的面板
GameObject scenePanel = Instantiate(scenePanelPrefab, panelContent);
// 在每个场景面板上找到场景名称的文本组件并设置
Text sceneText = scenePanel.transform.Find("top/sceneName").GetComponent<Text>();
sceneText.text = sceneName;
// 遍历该场景下的所有人员生成对应的UI项
foreach (SelectedInfo person in peopleList)
{
CreatePersonItem(scenePanel, person); // 调用封装方法生成人员项
}
}
// 根据人员信息生成一个UI项
private void CreatePersonItem(GameObject scenePanel, SelectedInfo person)
{
// 实例化一个人员项并将其作为场景面板的子物体
GameObject item = Instantiate(personItemPrefab, managerPanelContent);
// 获取并设置人员信息
Text nameText = item.transform.Find("name").GetComponent<Text>();
Text dutyText = item.transform.Find("Profession").GetComponent<Text>();
Debug.Log("----------------------" + nameText.text);
Debug.Log("++++++++++++++++++++++" + dutyText.text);
nameText.text = person.name; // 设置姓名
dutyText.text = person.duty; // 设置职责
}
// 点击项时调用
//public void OnItemClicked(GameObject clickedItem)
//{
// // 如果有之前选中的项,恢复其原始大小
// if (currentSelectedItem != null)
// {
// RectTransform rt = currentSelectedItem.GetComponent<RectTransform>();
// rt.localScale = originalScale; // 恢复原始大小
// }
// // 更新当前选中的项
// currentSelectedItem = clickedItem;
// RectTransform clickedItemRT = clickedItem.GetComponent<RectTransform>();
// // 放大当前选中的项
// clickedItemRT.localScale = originalScale * 1.5f; // 放大1.5倍
// // 使当前选中的项居中显示
// ScrollRect scrollRect = panelContent.GetComponentInParent<ScrollRect>();
// if (scrollRect != null)
// {
// float targetX = clickedItemRT.position.x - scrollRect.viewport.position.x;
// Vector3 targetPos = new Vector3(targetX, clickedItemRT.position.y, clickedItemRT.position.z);
// StartCoroutine(SmoothScrollToPosition(targetPos, 0.5f)); // 平滑滚动到目标位置
// }
//}
//// 平滑滚动到目标位置
//private IEnumerator SmoothScrollToPosition(Vector3 targetPosition, float duration)
//{
// Vector3 startPos = panelContent.position;
// float time = 0;
// while (time < duration)
// {
// panelContent.position = Vector3.Lerp(startPos, targetPosition, time / duration);
// time += Time.deltaTime;
// yield return null;
// }
// panelContent.position = targetPosition;
//}
}