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); }
private static CGSize getAdSize(IMobileSdkAdsUnityPlugin.AdType adType, IMobileIconParams iconParams, bool sizeAdjust) { CGSize adSize = new CGSize(); switch (adType) { case IMobileSdkAdsUnityPlugin.AdType.BANNER: adSize = getAdjustedAdSize(new CGSize(320, 50), sizeAdjust, IMobileSdkAdsUnityPlugin.AdType.BANNER); break; case IMobileSdkAdsUnityPlugin.AdType.BIG_BANNER: adSize = getAdjustedAdSize(new CGSize(320, 100), sizeAdjust, IMobileSdkAdsUnityPlugin.AdType.BIG_BANNER); 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 = getAdjustedAdSize(new CGSize(300, 250), sizeAdjust, IMobileSdkAdsUnityPlugin.AdType.MEDIUM_RECTANGLE); 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: #if !UNITY_EDITOR 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; #endif #if UNITY_IPHONE && !UNITY_EDITOR screenWidth = getScreenWidth_(isScreenPortrait()); screenHeight = getScreenHeight_(isScreenPortrait()); // 幅を計算する if (iconParams.iconViewLayoutWidth > 0) { iconAdWidth = iconParams.iconViewLayoutWidth; } else { int iconWidth = (iconParams.iconSize > 0) ? Math.Max(iconParams.iconSize, iconMinimumWidth) : iconDefaultWidth; iconAdWidth = (iconWidth + iconDefaultMargin) * 1; } // 高さを計算する // アイコン一つあたりの幅を計算 int iconImageWidth = 0; if (iconParams.iconSize > 0) { iconImageWidth = Math.Max(iconParams.iconSize, iconMinimumWidth); } else { if (iconAdWidth >= (iconDefaultWidth + iconDefaultMargin) * 1) { iconImageWidth = iconDefaultWidth; } else { iconImageWidth = iconMinimumWidth; } } // アイコンの表示間隔を取得(アイコン広告の表示サイス - アイコン一つあたりの幅 * アイコンの数) / アイコンの数 の結果と最低マージンとの比較で大きい方をマージンとして設定 int iconImageMargin = Math.Max((int)Math.Ceiling((double)(iconAdWidth - iconImageWidth * 1) / 1) , iconMinimumMargin); #elif UNITY_ANDROID && !UNITY_EDITOR screenWidth = getDensitySize (Screen.width); screenHeight = getDensitySize (Screen.height); // 幅を計算する 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); #endif #if !UNITY_EDITOR // 高さの取得 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); #endif break; } return adSize; }
private static CGSize getAdSize(IMobileSdkAdsUnityPlugin.AdType adType, IMobileIconParams iconParams, bool sizeAdjust) { CGSize adSize = new CGSize(); switch (adType) { case IMobileSdkAdsUnityPlugin.AdType.BANNER: adSize = getAdjustedAdSize(new CGSize(320, 50), sizeAdjust, IMobileSdkAdsUnityPlugin.AdType.BANNER); break; case IMobileSdkAdsUnityPlugin.AdType.BIG_BANNER: adSize = getAdjustedAdSize(new CGSize(320, 100), sizeAdjust, IMobileSdkAdsUnityPlugin.AdType.BIG_BANNER); 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 = getAdjustedAdSize(new CGSize(300, 250), sizeAdjust, IMobileSdkAdsUnityPlugin.AdType.MEDIUM_RECTANGLE); 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: #if !UNITY_EDITOR 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; #endif #if UNITY_IPHONE && !UNITY_EDITOR screenWidth = getScreenWidth_(isScreenPortrait()); screenHeight = getScreenHeight_(isScreenPortrait()); // 幅を計算する if (iconParams.iconViewLayoutWidth > 0) { iconAdWidth = iconParams.iconViewLayoutWidth; } else { int iconWidth = (iconParams.iconSize > 0) ? Math.Max(iconParams.iconSize, iconMinimumWidth) : iconDefaultWidth; iconAdWidth = (iconWidth + iconDefaultMargin) * 1; } // 高さを計算する // アイコン一つあたりの幅を計算 int iconImageWidth = 0; if (iconParams.iconSize > 0) { iconImageWidth = Math.Max(iconParams.iconSize, iconMinimumWidth); } else { if (iconAdWidth >= (iconDefaultWidth + iconDefaultMargin) * 1) { iconImageWidth = iconDefaultWidth; } else { iconImageWidth = iconMinimumWidth; } } // アイコンの表示間隔を取得(アイコン広告の表示サイス - アイコン一つあたりの幅 * アイコンの数) / アイコンの数 の結果と最低マージンとの比較で大きい方をマージンとして設定 int iconImageMargin = Math.Max((int)Math.Ceiling((double)(iconAdWidth - iconImageWidth * 1) / 1), iconMinimumMargin); #elif UNITY_ANDROID && !UNITY_EDITOR screenWidth = getDensitySize(Screen.width); screenHeight = getDensitySize(Screen.height); // 幅を計算する 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); #endif #if !UNITY_EDITOR // 高さの取得 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); #endif break; } return(adSize); }