using System; using UniRx; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.UI; public interface ISDUIPage : ISDUIElement { } public class SDUIPage : SDUIElement, ISDUIPage { [SerializeField] protected Image m_BgImage; [SerializeField] protected RectTransform m_HeaderTransform; [SerializeField] protected RectTransform m_BodyTransform; [SerializeField] protected RectTransform m_FooterTransform; protected virtual void Start () { var safeArea = SDEnvironment.Default.SafeAreaInset; m_HeaderTransform.anchoredPosition = new Vector2 (0, -safeArea.Top); m_FooterTransform.anchoredPosition = new Vector2 (0, safeArea.Bottom); m_BodyTransform.offsetMax = new Vector2 (m_BodyTransform.offsetMax.x, safeArea.Top); m_BodyTransform.offsetMin = new Vector2 (m_BodyTransform.offsetMin.x, safeArea.Bottom); } protected IObservable<GameObject> SetHeaderObject (string elementAddress) { return SDAssetUtils.InstantiateAsync (elementAddress, m_HeaderTransform); } protected IObservable<GameObject> SetBodyObject (string elementAddress) { return SDAssetUtils.InstantiateAsync (elementAddress, m_BodyTransform); } protected IObservable<GameObject> SetFooterObject (string elementAddress) { return SDAssetUtils.InstantiateAsync (elementAddress, m_FooterTransform); } }