2022-05-23 13:39:59 +00:00
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2022-05-27 16:06:04 +00:00
|
|
|
|
|
|
|
|
|
|
public void RemoveNative()
|
|
|
|
|
|
{
|
|
|
|
|
|
ToukaAdManager.Instance.HideNative(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void ShowNativeAd(string adpos)
|
2022-05-23 13:39:59 +00:00
|
|
|
|
{
|
2022-05-27 16:06:04 +00:00
|
|
|
|
Debug.Log("yangwu " + GetX() + "y" + GetY() + "width" + GetWidth() + "hei" + GetWidth());
|
2022-05-23 13:39:59 +00:00
|
|
|
|
if (ToukaAdManager.Instance.IsReadyNative)
|
|
|
|
|
|
{
|
2022-05-27 16:06:04 +00:00
|
|
|
|
|
|
|
|
|
|
ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight(),adpos);
|
2022-05-23 13:39:59 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
//由于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;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|