123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- using System;
- using System.IO;
- using System.Reflection;
- namespace UnityEngine.Monetization
- {
- [AddComponentMenu("")]
- sealed class Placeholder : MonoBehaviour
- {
- Texture2D m_LandscapeTexture;
- Texture2D m_PortraitTexture;
- Texture2D m_LandscapeAdTexture;
- Texture2D m_PortraitAdTexture;
- bool m_Showing;
- bool purchaseButtonIsClicked = false;
- string m_PlacementId;
- bool m_AllowSkip;
- internal event ShowAdStartCallback onStart;
- internal event ShowAdFinishCallback onFinish;
- static Texture2D TextureFromEmbeddedResource(string resourceName)
- {
- try
- {
- Assembly assembly = Assembly.GetExecutingAssembly();
- Stream resourceStream = assembly.GetManifestResourceStream(resourceName);
- byte[] bytes = new byte[resourceStream.Length];
- resourceStream.Read(bytes, 0, (int)resourceStream.Length);
- var texture2D = new Texture2D(1, 1);
- var loadImage = typeof(Texture2D).GetMethod("LoadImage", new[] { typeof(byte[]) });
- if (loadImage != null)
- {
- loadImage.Invoke(texture2D, new object[] { bytes });
- }
- else
- {
- var imageConversion = Type.GetType("UnityEngine.ImageConversion, UnityEngine");
- loadImage = imageConversion.GetMethod("LoadImage", new[] { typeof(Texture2D), typeof(byte[]), typeof(bool) });
- loadImage.Invoke(texture2D, new object[] { texture2D, bytes, true });
- }
- return texture2D;
- }
- catch (Exception)
- {
- return null;
- }
- }
- public void Awake()
- {
- m_LandscapeTexture = Resources.Load("LandscapeMon") as Texture2D;
- m_PortraitTexture = Resources.Load("PortraitMon") as Texture2D;
- m_LandscapeAdTexture = Resources.Load("Landscape") as Texture2D;
- m_PortraitAdTexture = Resources.Load("Portrait") as Texture2D;
- }
- public void Show(string placementId, bool allowSkip)
- {
- m_PlacementId = placementId;
- m_AllowSkip = allowSkip;
- m_Showing = true;
- onStart?.Invoke();
- }
- public void OnGUI()
- {
- if (!m_Showing)
- {
- return;
- }
- GUI.ModalWindow(0, new Rect(0, 0, Screen.width, Screen.height), ModalWindowFunction, "");
- }
- void OnApplicationQuit()
- {
- m_Showing = false;
- }
- void ModalWindowFunction(int id)
- {
- if (m_PlacementId == "ShowAdPlacement")
- {
- // show normal ads
- if (m_LandscapeAdTexture != null && m_PortraitAdTexture != null)
- {
- GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), Screen.width > Screen.height ? m_LandscapeAdTexture : m_PortraitAdTexture, ScaleMode.ScaleAndCrop);
- }
- else
- {
- GUIStyle myStyle = new GUIStyle(GUI.skin.label);
- myStyle.alignment = TextAnchor.MiddleCenter;
- myStyle.fontSize = 32;
- GUI.Label(new Rect(0, 0, Screen.width, Screen.height), "This screen would be your Ad Unit", myStyle);
- }
- }
- else
- {
- // show promo ads
- if (m_LandscapeTexture != null && m_PortraitTexture != null)
- {
- GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), Screen.width > Screen.height ? m_LandscapeTexture : m_PortraitTexture, ScaleMode.ScaleAndCrop);
- }
- else
- {
- GUIStyle myStyle = new GUIStyle(GUI.skin.label);
- myStyle.alignment = TextAnchor.MiddleCenter;
- myStyle.fontSize = 32;
- GUI.Label(new Rect(0, 0, Screen.width, Screen.height), "This screen would be your Promo Ad Unit", myStyle);
- }
- GUIStyle purchaseStyle = new GUIStyle(GUI.skin.button);
- purchaseStyle.fontSize = 40;
- purchaseStyle.normal.textColor = Color.white;
- if (!purchaseButtonIsClicked)
- {
- if (Screen.width > Screen.height)
- {
- if (GUI.Button(new Rect(Screen.width * 3 / 4 - 100, Screen.height * 3 / 4 - 100, 200, 100), "Purchase", purchaseStyle))
- {
- purchaseButtonIsClicked = true;
- }
- }
- else
- {
- if (GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height * 3 / 4, 200, 100), "Purchase", purchaseStyle))
- {
- purchaseButtonIsClicked = true;
- }
- }
- }
- else
- {
- GUIStyle confirmStyle = new GUIStyle(GUI.skin.button);
- confirmStyle.fontSize = 40;
- confirmStyle.normal.textColor = Color.white;
- GUIStyle cancelStyle = new GUIStyle(GUI.skin.button);
- cancelStyle.fontSize = 40;
- cancelStyle.normal.textColor = Color.white;
- if (GUI.Button(new Rect(Screen.width * 3 / 4, Screen.height - 150, 200, 100), "Cancel", confirmStyle))
- {
- purchaseButtonIsClicked = false;
- m_Showing = false;
- }
- if (GUI.Button(new Rect(Screen.width * 3 / 4 - 200, Screen.height - 150, 200, 100), "Confirm", cancelStyle))
- {
- purchaseButtonIsClicked = false;
- m_Showing = false;
- }
- }
- }
- if (m_AllowSkip && GUI.Button(new Rect(20, 20, 150, 50), "Skip"))
- {
- m_Showing = false;
- onFinish?.Invoke(ShowResult.Skipped);
- }
- if (GUI.Button(new Rect(Screen.width - 170, 20, 150, 50), "Close"))
- {
- m_Showing = false;
- onFinish?.Invoke(ShowResult.Finished);
- }
- }
- }
- }
|