mergemilitary/Assets/TKGSDK/UnitySDK/Scripts/ADSScripts/SDKInnerScripts/iOS/NativeAd.cs

121 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Touka
{
public class NativeAd : MonoBehaviour
{
protected static RectTransform s_NativeAd;
private static NativeAd s_instance;
public static NativeAd Instance
{
get
{
if (s_instance == null)
{
Debug.LogError("s_instance == null ");
}
return s_instance;
}
}
[SerializeField]
private Camera uiCamera;
bool horizontal = true;
private void Awake()
{
s_instance = this;
}
public void RemoveNative()
{
ToukaAdManager.Instance.HideNative(false);
}
public void ShowNativeAd(string adpos)
{
Debug.Log("yangwu " + GetX() + "y" + GetY() + "width" + GetWidth() + "hei" + GetWidth());
if (ToukaAdManager.Instance.IsReadyNative)
{
ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight(),adpos);
}
}
//由于loadnative 函数有个问题比如多个位置多个不同尺寸的native。目前只能处理一个尺寸所以设置了firstFlg位置宽高得到一次即可。
static bool firstFlg = true;
static float m_width;
static float m_height;
static float m_x;
static float m_y;
public float GetWidth()
{
FirstGetWAndH();
return m_width;
}
public float GetHeight()
{
FirstGetWAndH();
return m_height;
}
public float GetX()
{
FirstGetWAndH();
return m_x;
}
public float GetY()
{
FirstGetWAndH();
return m_y;
}
void FirstGetWAndH()
{
if (firstFlg)
{
if (uiCamera == null)
{
uiCamera = GameObject.Find("Main Camera").GetComponent<Camera>();
}
Debug.Log("YANGWY " + uiCamera);
Vector3 lefttop = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x - GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y + GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
Vector3 rightbottom = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x + GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y - GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
Vector3 picture_zero = uiCamera.WorldToScreenPoint(transform.position);
float x = lefttop.x;
float y = rightbottom.y;
float width = rightbottom.x - lefttop.x;
float height = Mathf.Abs(rightbottom.y - lefttop.y);
y = Screen.height - (picture_zero.y + height / 2);
if (horizontal)
{
if (height > width)
{
height = width;
}
if (width > height * 1.2f)
{
x += (width - (height * 1.2f)) / 2;
width = height * 1.2f;
}
}
else
{
}
m_x = x;
m_y = y;
m_width = width;
m_height = height;
firstFlg = false;
}
}
}
}