/// <summary> /// 広告の表示領域を返します /// </summary> /// <returns>広告の表示領域</returns> /// <param name="left">Left</param> /// <param name="top">Top</param> /// <param name="adType">AdType</param> /// <param name="iconParams">IMobileIconParams</param> internal static Rect getAdRect(int left, int top, IMobileSdkAdsUnityPlugin.AdType adType, IMobileIconParams iconParams) { iconParams = iconParams ?? new IMobileIconParams(); CGSize adSize = getAdSize(adType, iconParams); return(new Rect(left, top, adSize.width, adSize.height)); }
private static CGSize getAdSize(IMobileSdkAdsUnityPlugin.AdType adType, IMobileIconParams iconParams) { CGSize adSize = new CGSize(); switch (adType) { case IMobileSdkAdsUnityPlugin.AdType.BANNER: adSize = new CGSize(320, 50); break; case IMobileSdkAdsUnityPlugin.AdType.BIG_BANNER: adSize = new CGSize(320, 100); break; case IMobileSdkAdsUnityPlugin.AdType.TABLET_BANNER: adSize = new CGSize(468, 60); break; case IMobileSdkAdsUnityPlugin.AdType.TABLET_BIG_BANNER: adSize = new CGSize(728, 90); break; case IMobileSdkAdsUnityPlugin.AdType.MEDIUM_RECTANGLE: adSize = new CGSize(300, 250); break; case IMobileSdkAdsUnityPlugin.AdType.BIG_RECTANGLE: adSize = new CGSize(336, 280); break; case IMobileSdkAdsUnityPlugin.AdType.SKYSCRAPER: adSize = new CGSize(120, 600); break; case IMobileSdkAdsUnityPlugin.AdType.WIDE_SKYSCRAPER: adSize = new CGSize(160, 600); break; case IMobileSdkAdsUnityPlugin.AdType.SQUARE: adSize = new CGSize(250, 250); break; case IMobileSdkAdsUnityPlugin.AdType.SMALL_SQUARE: adSize = new CGSize(200, 200); break; case IMobileSdkAdsUnityPlugin.AdType.HALFPAGE: adSize = new CGSize(300, 600); break; case IMobileSdkAdsUnityPlugin.AdType.ICON: int iconDefaultWidth = 57; // アイコン1つあたりのデフォルトサイズ int iconMinimumWidth = 47; // アイコン1つあたりの最小サイズ int iconDefaultMargin = 18; // デフォルトアイコン間隔 int iconMinimumMargin = 4; // 最小アイコン間隔 int iconAdTitleReserveSpace = 3; // タイトル表示エリアの予備マージン // アイコン広告の表示サイズをアイコンパラメータから計算して求める int iconAdWidth = 0; int iconAdHeight = 0; // スクリーンの論理サイズを取得 int screenWidth = 0; int screenHeight = 0; #if UNITY_IPHONE screenWidth = getScreenWidth_(isScreenPortrait()); screenHeight = getScreenHeight_(isScreenPortrait()); #elif UNITY_ANDROID screenWidth = getDensitySize(Screen.width); screenHeight = getDensitySize(Screen.height); #endif // 幅を計算する if (iconParams.iconViewLayoutWidth > 0) { iconAdWidth = iconParams.iconViewLayoutWidth; } else { if (iconParams.iconNumber < 4) { int iconWidth = (iconParams.iconSize > 0) ? Math.Max(iconParams.iconSize, iconMinimumWidth) : iconDefaultWidth; iconAdWidth = (iconWidth + iconDefaultMargin) * iconParams.iconNumber; } else { iconAdWidth = Math.Min(screenWidth, screenHeight); } } // 高さを計算する // アイコン一つあたりの幅を計算 int iconImageWidth = 0; if (iconParams.iconSize > 0) { iconImageWidth = Math.Max(iconParams.iconSize, iconMinimumWidth); } else { if (iconAdWidth >= (iconDefaultWidth + iconDefaultMargin) * iconParams.iconNumber) { iconImageWidth = iconDefaultWidth; } else { iconImageWidth = iconMinimumWidth; } } // アイコンの表示間隔を取得(アイコン広告の表示サイス - アイコン一つあたりの幅 * アイコンの数) / アイコンの数 の結果と最低マージンとの比較で大きい方をマージンとして設定 int iconImageMargin = Math.Max((int)Math.Ceiling((double)(iconAdWidth - iconImageWidth * iconParams.iconNumber) / iconParams.iconNumber), iconMinimumMargin); // 高さの取得 if (!iconParams.iconTitleEnable) { iconAdHeight = iconImageWidth; } else { int iconTitleOffset = (iconParams.iconTitleOffset > 0) ? iconParams.iconTitleOffset : 4; int iconTitleFontSize = (iconParams.iconTitleFontSize > 0) ? Math.Max(iconParams.iconTitleFontSize, 8) : 10; int iconTitleShadowDy = (iconParams.iconTitleShadowEnable) ? iconParams.iconTitleShadowDy : 0; // タイトルが一行に収まるか計算 if ((iconImageWidth + iconImageMargin) >= (iconDefaultWidth + iconDefaultMargin / 2)) { iconAdHeight = iconImageWidth + iconTitleOffset + iconTitleFontSize + iconTitleShadowDy + iconAdTitleReserveSpace; } else { iconAdHeight = iconImageWidth + iconTitleOffset + iconTitleFontSize * 2 + iconTitleShadowDy + iconAdTitleReserveSpace; } } adSize = new CGSize(iconAdWidth, iconAdHeight); break; } return(adSize); }
/// <summary> /// 広告の表示領域を返します /// </summary> /// <returns>広告の表示領域</returns> /// <param name="alignPosition">AdAlignPosition</param> /// <param name="valignPosition">AdValignPosition</param> /// <param name="adType">AdType</param> /// <param name="iconParams">IMobileIconParams</param> internal static Rect getAdRect(IMobileSdkAdsUnityPlugin.AdAlignPosition alignPosition, IMobileSdkAdsUnityPlugin.AdValignPosition valignPosition, IMobileSdkAdsUnityPlugin.AdType adType, IMobileIconParams iconParams) { iconParams = iconParams ?? new IMobileIconParams(); // スクリーンの論理サイズを取得 int screenWidth = 0; int screenHeight = 0; #if UNITY_IPHONE && !UNITY_EDITOR screenWidth = getScreenWidth_(isScreenPortrait()); screenHeight = getScreenHeight_(isScreenPortrait()); #elif UNITY_ANDROID screenWidth = getDensitySize(Screen.width); screenHeight = getDensitySize(Screen.height); #endif // 広告の表示位置を計算 int x = 0; int y = 0; // 広告サイズを取得 CGSize adSize = getAdSize(adType, iconParams); // x座標の取得 switch (alignPosition) { case IMobileSdkAdsUnityPlugin.AdAlignPosition.LEFT: x = 0; break; case IMobileSdkAdsUnityPlugin.AdAlignPosition.CENTER: x = (screenWidth - adSize.width) / 2; break; case IMobileSdkAdsUnityPlugin.AdAlignPosition.RIGHT: x = screenWidth - adSize.width; break; } // y座標の取得 switch (valignPosition) { case IMobileSdkAdsUnityPlugin.AdValignPosition.TOP: y = 0; break; case IMobileSdkAdsUnityPlugin.AdValignPosition.MIDDLE: y = (screenHeight / 2) - (adSize.height / 2); break; case IMobileSdkAdsUnityPlugin.AdValignPosition.BOTTOM: y = screenHeight - adSize.height; break; } return(getAdRect(x, y, adType, iconParams)); }
/// <summary> /// 広告の表示領域を返します /// </summary> /// <returns>広告の表示領域</returns> /// <param name="alignPosition">AdAlignPosition</param> /// <param name="valignPosition">AdValignPosition</param> /// <param name="adType">AdType</param> /// <param name="iconParams">IMobileIconParams</param> /// <param name="sizeAdjust">sizeAdjust</param> internal static Rect getAdRect(IMobileSdkAdsUnityPlugin.AdAlignPosition alignPosition, IMobileSdkAdsUnityPlugin.AdValignPosition valignPosition, IMobileSdkAdsUnityPlugin.AdType adType, IMobileIconParams iconParams, bool sizeAdjust) { // スクリーンの論理サイズを取得 int screenWidth = 0; int screenHeight = 0; #if UNITY_IPHONE && !UNITY_EDITOR screenWidth = getScreenWidth_(isScreenPortrait()); screenHeight = getScreenHeight_(isScreenPortrait()); #elif UNITY_ANDROID && !UNITY_EDITOR screenWidth = getDensitySize(Screen.width); screenHeight = getDensitySize(Screen.height); #endif // 広告の表示位置を計算 int left = 0; int top = 0; // 広告サイズを取得 iconParams = iconParams ?? new IMobileIconParams(); CGSize adSize = getAdSize(adType, iconParams, sizeAdjust); // x座標の取得 switch (alignPosition) { case IMobileSdkAdsUnityPlugin.AdAlignPosition.LEFT: left = 0; break; case IMobileSdkAdsUnityPlugin.AdAlignPosition.CENTER: left = (screenWidth - adSize.width) / 2; break; case IMobileSdkAdsUnityPlugin.AdAlignPosition.RIGHT: left = screenWidth - adSize.width; break; } // y座標の取得 switch (valignPosition) { case IMobileSdkAdsUnityPlugin.AdValignPosition.TOP: top = 0; break; case IMobileSdkAdsUnityPlugin.AdValignPosition.MIDDLE: top = (screenHeight / 2) - (adSize.height / 2); break; case IMobileSdkAdsUnityPlugin.AdValignPosition.BOTTOM: #if UNITY_IOS top = screenHeight - adSize.height - 56; if (SystemInfo.deviceModel.Contains("iPad")) { // ipadでの処理 top = screenHeight - adSize.height - 82; // ゴリ押しの修正 } #else top = screenHeight - adSize.height - 48; #endif break; } return(new Rect(left, top, adSize.width, adSize.height)); }
private static CGSize getAdjustedAdSize(CGSize originalSize, bool sizeAdjust, IMobileSdkAdsUnityPlugin.AdType adType) { if (!sizeAdjust) { return(originalSize); } int screenWidth = 0; int screenHeight = 0; #if UNITY_IPHONE && !UNITY_EDITOR screenWidth = getScreenWidth_(isScreenPortrait()); screenHeight = getScreenHeight_(isScreenPortrait()); #elif UNITY_ANDROID && !UNITY_EDITOR screenWidth = getDensitySize(Screen.width); screenHeight = getDensitySize(Screen.height); #endif screenWidth = Math.Min(screenWidth, screenHeight); int adjustedWidth = (adType == IMobileSdkAdsUnityPlugin.AdType.MEDIUM_RECTANGLE) ? screenWidth - 20 : screenWidth; int adjustedHeight = (int)Math.Round(originalSize.height * (double)adjustedWidth / (double)originalSize.width); return(new CGSize(adjustedWidth, adjustedHeight)); }