2015年6月29日月曜日

エラー:Conversion to Dalvik format failed: Unable to execute dex

環境Mac Yosemite エクリプス4.2
説明 リソース パス ロケーション 型
Conversion to Dalvik format failed: Unable to execute dex: com.android.dx.dex.code.DalvInsn.withMapper(Lcom/android/dx/ssa/RegisterMapper;)Lcom/android/dx/dex/code/DalvInsn; APPname 不明 Android パッケージング問題

解決方法

ビルドパスのandroid pirvate librarysのチェックを外す

要素'd:skin'で始まる無効なコンテンツが見つかりました。ここでは子要素を使用できません。

昨日まで使えていたエクルプスを今日開いてみたらなぜかエラーが・・・
エラー: Error parsing /Users/XXX/Desktop/DEV/adt-bundle-mac-x86_64-20140702/sdk/system-images/android-22/android-wear/x86/devices.xml
cvc-complex-type.2.4.d: 要素'd:skin'で始まる無効なコンテンツが見つかりました。ここでは子要素を使用できません。

解決方法

http://stackoverflow.com/questions/30439524/error-loading-the-sdk-when-eclipse-is-started#30439524

2015年6月27日土曜日

UnityWebGLを試してみた。

以前作成した色彩感覚テストアプリをWebGLにビルドしてみました。
グラデーション
Unityプレイヤー

Chromeで実行したところ
It seems your browser does not support running Unity WebGL content from file:// urls. Please upload it to an http server, or try a different browser.
Macのセキュリティに引っかかってしまいました。
全部ピンク
Safariで実行
ブラウザで実行するとなぜか色が全部同じに。。 
色を作成するコードに対応できていないのかもしれません

140mも
そしてファイルサイズが136メガ!
多分基本となるAPIが重いのでしょう。
どんなにソースが軽くても130メガ以上のファイルになってしまいます。
UnityのWebGLはhttpサーバで公開するには向いていないかも?
プラットフォームを選ばずに動作させられる点が使いどころかもしれません。

2015年6月24日水曜日

RPG用のフリー素材サイト 商用可著作権表示不要

RPG用のフリー素材サイトを探してみました。

条件


  • 商用利用可能
  • 著作権表示不要
  • 加工改変可能

欲しい素材

キャラクターの歩行
モンスター
エフェクト
マップチップ

条件に当てはまる素材サイト

ぴぽや倉庫 http://piposozai.wiki.fc2.com/
キャラクターからエフェクト、アイコンまで一通り手に入ります。個人で2Dゲームを作るには十分な素材数です。

キーワード;無料ゲーム素材

2015年6月18日木曜日

UnityアプリにAdMob広告を表示するサンプル

AndroidとiOSの両方でAdMob広告を表示する手順とサンプルソースです。
2015年6月最新のplug-inを使用。64ビット対応。iosシュミレーター使用は不可。

1.GoogleMobileAds.unitypackageをダウンロードしてプロジェクトにインポートする

https://github.com/googleads/googleads-mobile-plugins
今回はv2.2.1を使用しました。
64ビットアーキテクチャ互換とiOS_SDK7に対応済みです。

2.GooglePlayServiceをダウンロードしてインポートする

android SDKのtoolsにあるandroidからsdkmanagerを開いてダウンロードできます。
android_sdk/extras/google/google_play_services/libproject/google-play-services_libをunityプロジェクトのasset/plugin/androidにコピペ
admob入りのプロジェクト
インポート後のプロジェクト

3.以下の広告表示クラスを作成してカメラに貼り付ける

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;
//このクラスをメインカメラに貼り付ける
public class AdMobScript : MonoBehaviour {
//AdMobのIDをinspectorから入力する ca-app-pub-XXXXXX
public string iOS_Banner_ID;
public string iOS_Interstitial_ID;
public string iOS_Banner_ID;
public string iOS_Interstitial_ID;

private InterstitialAd interstitial;
private AdRequest request;

bool isInterstitial = false; 

// Use this for initialization
void Awake () {
//テストモード
//TestDevice ();
// インタースティシャル広告をロード
RequestInterstitial ();

// バナー広告を表示
RequestBanner ();
}

//任意のタイミングでインタースティシャル広告を表示 OnClickなど
void InterAdView () {
if (interstitial.IsLoaded()) {
interstitial.Show();
}
}

//テストモードを使用
void TestDeviceMode () {
AdRequest request = new AdRequest.Builder()
.AddTestDevice(AdRequest.TestDeviceSimulator)       // Simulator.
.AddTestDevice("テストデバイスID")  // DEV.
.Build();
}

//カメラ下側にバナーを表示
public void RequestBanner()
{
#if UNITY_ANDROID
string adUnitId = Android_Banner_ID;
#elif UNITY_IPHONE
string adUnitId = iOS_Banner_ID;
#else
string adUnitId = "iOSでもAndroidでもない端末の場合";
#endif

BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Bottom);
AdRequest request = new AdRequest.Builder().Build();
bannerView.LoadAd(request);
}

//広告をダウンロードする
public void RequestInterstitial()
{
#if UNITY_ANDROID
string adUnitId = Android_Interstitial_ID;
#elif UNITY_IPHONE
string adUnitId = iOS_Interstitial_ID;
#else
string adUnitId = "iOSでもAndroidでもない端末の場合";
#endif

if (isInterstitial == true) {
interstitial.Destroy ();
}

interstitial = new InterstitialAd (adUnitId);
request = new AdRequest.Builder ().Build ();
interstitial.LoadAd (request);
interstitial.AdClosed += HandleAdClosed;
isInterstitial = false;
}

// インタースティシャルを閉じた
void HandleAdClosed (object sender, System.EventArgs e)
{
isInterstitial = true;
}
}

インスペクタから広告のidを入力します。

Android版は以上です。以下はiOS版の追加設定です。
iOS版のビルドの際はunityのbuild settingsのscripting backend をIL2CPPにする

4.Xcodeにフレームワークを追加(iOS)

GoogleMobileAdsSdkiOSをダウンロードする。
今回は7.3.1を使用。
linkd Framework and Librariesに以下を追加する

  • AdSupport
  • CoreTelephony
  • EventKit
  • EventKitUI
  • MessageUI
  • StoreKit
  • GoogleMobileAds(ダウンロードしたGoogleMobileAdsSdkiOS内にある)

BiludeSettinsのEnable ModulesをYESに設定する

2015年6月6日土曜日

Google Play reject 注意 - 削除または不承認となったアプリがあります

GooglePlayでアプリの公開に初めて失敗しました。

注意 - 削除または不承認となったアプリがあります  アプリが Google Play ポリシーに違反しているため不承認となりました。問題を解決したうえでアプリを再送信することができます。

>この通知は、アップロードされたアプリが不承認となったことをお知らせするものです。
下記の問題を解決し、修正したバージョンを公開してください。

削除の理由: コンテンツ ポリシーの知的財産権条項となりすましまたは虚偽の振る舞い条項への違反。

Google Play ストアに掲載されている情報(タイトル、説明、ロゴ、プロモーション用スクリーンショットなど)で、第三者に帰属する保護対象の著作物を不正に使用してはなりません。アプリのアイコンやプロモーション用スクリーンショットに、既存のサービスに類似した紛らわしい画像を使用してはなりません。
保護対象の著作物には一般に、商品名、ブランド、画像、ロゴ、音楽などの作品が含まれます。

 コンテンツを利用する許可を得ている場合は、Google Play ヘルプセンターからご連絡いただき、許可内容が確認できる正式な証明書をお送りください。

原因はフリー素材をアプリに使ったためです。
Googleはプログラムでファイルを解析し、過去に登録されたアプリと比較しています。
そのため過去に同じフリー素材を使用したアプリがある場合はそちらに著作権があるものと判断されます。
特にアイコンはオリジナルのものでないとなりすまし扱いされてしまいます。
対策するにもフリー素材に正式な許可証明なんて存在しないので原因と思われるファイルを別のものに置き換えるしかありません。
リジェクト回数が増えるとアカウント停止される可能性があるのでフリー素材を扱う場合は注意ください。

2015年6月4日木曜日

Error building Player: UnityException: Unable to install APK!

unityで実機動作確認のためにbuild and runを行った際に以下のエラーが発生。
Installation failed with the following output:
pkg: /data/local/tmp/Package.apk
Failure [INSTALL_FAILED_CONTAINER_ERROR]
4161 KB/s (63566398 bytes in 14.915s)

Error building Player: UnityException:jpgUnityEditor.BuildPlayerWindow:BuildPlayerAndRun()

Error building Player: UnityException: Unable to install APK!
Installation failed. See the Console for details.

apkのサイズが大きい時によく発生します。

解決方法


  1. 実機をスリープにならないようにする
  2. 転送ケーブルを良いものにする
  3. ファイルサイズを小さくする