using UnityEngine; using UnityEngine.UI; public class FirstSceneBg : MonoBehaviour { private RawImage _bg; private RawImage _logo; private float _publishDelta; private Text _publishText; private Text _tip; private Text _gameVersion; public static FirstSceneBg instance { get; private set; } private void Awake() { instance = this; DontDestroyOnLoad(gameObject); _bg = transform.Find("BG").GetComponent(); _logo = transform.Find("Logo").GetComponent(); _tip = transform.Find("DownloadTip/Text").GetComponent(); _publishText = transform.Find("PublishText/Text").GetComponent(); _gameVersion = transform.Find("Version").GetComponent(); var publishBg = (RectTransform) _publishText.rectTransform.parent; _publishDelta = publishBg.sizeDelta.y - _publishText.preferredHeight; publishBg.gameObject.SetActive(false); } private void Start() { AssetUpdateDownloaderTick.instance.LoadStreamingAsset("ExTextures/PacketRes/LoginBG.jpg", OnBgLoad); AssetUpdateDownloaderTick.instance.LoadStreamingAsset("ExTextures/PacketRes/Logo.png", OnLogoLoad); // 适配健康游戏忠告 var healthy = (RectTransform)transform.Find("HealthyGaming"); var healthyText = healthy.Find("Text").GetComponent(); var sizeDelta = healthy.sizeDelta; sizeDelta.y = healthyText.preferredHeight + 10f; healthy.sizeDelta = sizeDelta; } private void OnDestroy() { instance = null; } public static void CreateInstance() { var prefab = Resources.Load("Prefab/FirstSceneBg"); if (prefab) { var item = Instantiate(prefab, Vector3.zero, Quaternion.identity); var firstBg = item.AddComponent(); firstBg.SetTip("检查资源版本中..."); } } public void ShowTip(bool isShow) { _tip.transform.parent.gameObject.SetActive(isShow); } public void ShowGameVersion() { _gameVersion.text = string.Format("游戏版本:{0}.{1}", Application.version, AssetUpdateManager.LoadCurrentVersion()); float posY; if (_publishText.gameObject.activeInHierarchy) { var publishBg = (RectTransform) _publishText.rectTransform.parent; var sizeDelta = publishBg.sizeDelta; posY = sizeDelta.y; } else posY = 0f; var rectTransform = _gameVersion.rectTransform; var pos = rectTransform.anchoredPosition; pos.y = posY; rectTransform.anchoredPosition = pos; } public void SetTip(string text) { _tip.text = text; } public void SetPublishText(string text) { _publishText.text = text; // 试图适配屏幕Dpi var canvasRect = (RectTransform)_publishText.rectTransform.root; var fontSize = Mathf.CeilToInt(canvasRect.sizeDelta.y * (20f / 720f)); _publishText.fontSize = fontSize; var publishBg = (RectTransform) _publishText.rectTransform.parent; var sizeDelta = publishBg.sizeDelta; sizeDelta.y = _publishText.preferredHeight + _publishDelta; publishBg.sizeDelta = sizeDelta; publishBg.gameObject.SetActive(true); } private void OnBgLoad(WWW www) { Texture2D texture = null; if (string.IsNullOrEmpty(www.error)) texture = www.texture; if (texture) { _bg.texture = texture; _bg.color = Color.white; var rootSize = ((RectTransform) transform.root).sizeDelta; var ratio = Mathf.Max(rootSize.x / texture.width , rootSize.y / texture.height); var sizeDelta = new Vector2(texture.width, texture.height) * ratio + Vector2.one * 5f; _bg.rectTransform.sizeDelta = sizeDelta; } } private void OnLogoLoad(WWW www) { Texture2D texture = null; if (string.IsNullOrEmpty(www.error)) texture = www.texture; if (texture) { _logo.texture = texture; _logo.color = Color.white; _logo.rectTransform.sizeDelta = new Vector2(texture.width, texture.height); } } }