Files
XRLib/Assets/Scenes/Sample/ShiPopupSample.cs
2025-11-17 19:30:05 +09:00

63 lines
1.8 KiB
C#

using Cysharp.Threading.Tasks;
using SHI.modal;
using System;
using System.Globalization;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 샘플 장면 드라이버: 버튼 클릭으로 SHI BlockDetail 모달을 생성/표시하고,
/// StreamingAssets에서 glb/간트 JSON을 읽어 모달에 전달합니다.
/// </summary>
public class ShiPopupSample : MonoBehaviour
{
[SerializeField]
private GameObject blockDetailModalPrefab;
[SerializeField]
private Button openModalButton;
private BlockDetailModal blockDetailModal;
private void Start()
{
if (openModalButton != null)
{
openModalButton.onClick.AddListener(() =>
{
if (blockDetailModal == null && blockDetailModalPrefab != null)
{
Canvas canvas = Canvas.FindFirstObjectByType<Canvas>();
Debug.Log($"Creating BlockDetailModal under Canvas:{canvas}");
blockDetailModal = Instantiate(blockDetailModalPrefab, canvas.transform).GetComponent<BlockDetailModal>();
}
blockDetailModal.gameObject.SetActive(true);
SetupData().Forget();
});
}
}
/// <summary>
/// StreamingAssets에서 샘플 간트 JSON과 모델을 읽어 모달에 적용합니다.
/// </summary>
private async UniTaskVoid SetupData()
{
if (blockDetailModal == null)
{
Debug.LogWarning("BlockDetailModal is not assigned.");
return;
}
string sa = Application.streamingAssetsPath;
string glbPath = Path.Combine(sa, "block.glb");
string jsonPath = "isop_chart_short.json";
Debug.Log($"Loaded blockDetailModal:{blockDetailModal}");
await blockDetailModal.LoadData(glbPath, jsonPath);
}
}