2014年7月25日金曜日

Android StudioでUnityのNative Plugin(jar)をつくる

Gradleについてあまり詳しくないですが、とりあえずHello World的なものが動いたのでメモ。

環境

OS X Mavericks 10.9.4
Android Studio (Beta) 0.8.2
Unity 4.5.2f1

空のプロジェクトを作成

Android Studioで[Add No Activity]を選択して空のプロジェクトを作成。

jarファイルの追加


classes.jarファイルをプロジェクトのlibsフォルダにコピー。
Macの場合のパス
<Unityインストールディレクトリ>/Unity.app/Contents/PlaybackEngines/AndroidPlayer/release/bin/classes.jar

android.jarファイルをプロジェクトのlibsフォルダにコピー。
パス
<Android SDK Root>/platforms/android-19/android.jar
※今回はAndroid 4.4のjarを使用

Sync Project with Gradle Files


Native Plugin側のコード

<Project Root>/app/src/main/java/<Package Name>/配下にJava Classを新規作成。
適当にToastを表示するだけのプラグインを作成。

package com.example.unityplugin;

import android.app.Activity;
import android.widget.Toast;

import com.unity3d.player.UnityPlayer;

public class AndroidNative {
    public static void showToast() {
        final Activity activity = UnityPlayer.currentActivity;
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(activity, "Hello Native Plugin!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

build.gradleの編集

// apply plugin: 'com.android.application'
apply plugin: 'java'

jar.baseName = 'android-native-plugin'
version = '1.0.0'

//android {
//    compileSdkVersion 20
//    buildToolsVersion "20.0.0"
//
//    defaultConfig {
//        applicationId "com.example.unityplugin"
//        minSdkVersion 15
//        targetSdkVersion 20
//        versionCode 1
//        versionName "1.0"
//    }
//    buildTypes {
//        release {
//            runProguard false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//        }
//    }
//}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

jarファイルの作成

Android StudioのTerminalを開き下記のコマンドを実行。
./../gradlew jar


jarファイルは下記のディレクトリ配下に作成される。
<Project Root>/app/build/libs/

作成したjarファイルをUnityプロジェクトのAssets/Plugins/Android/ディレクトリ配下に配置。

呼び出し側コード

using UnityEngine;
using System.Collections;

public class Toast : MonoBehaviour {

 // Use this for initialization
 void Start () {
  AndroidJavaClass androidNativePlugin = new AndroidJavaClass("com.example.unityplugin.AndroidNative");
  androidNativePlugin.CallStatic("showToast");
 }
 
 // Update is called once per frame
 void Update () {
 
 }
}

動作確認


2014年3月28日金曜日

Unreal Engine 4でFPSを表示する方法


[`]キーで画面下部にプロンプトが表示されるので
表示されたプロンプトに「Stat FPS」と入力する。
※プロンプトでのコマンド入力時はTABキーで補完が使える


Editor上でPlay中は右上のEnter console commandと表示されているところに「stat fps」と入力する。


2014年3月12日水曜日

AndroidなUnityのDUALSHOCK4 キーアサイン

環境

Unity 4.3.4
Xperia Z1

キーアサイン

oystick button 0
joystick button 1
×
joystick button 2
joystick button 3
L1
joystick button 4
L2
joystick button 5
R2
joystick button 6
SHARE
joystick button 7
OPTIONS
joystick button 8
Touch Pad Click
joystick button 10
Analog Stick Right Click
joystick button 11
Analog Stick Left Click 
joystick button 12
PS BUTTON
joystick button 13
joystick button 14
R1
X axis
Analog Stick Left ←→
Y axis
Analog Stick Left ↑↓
3rd axis
Analog Stick Right ←→
4th axis
Analog Stick Right ↑↓
5th axis
←→
6th axis
↑↓

AndroidなUnityのDUALSHOCK3 キーアサイン

環境

Unity 4.3.4
Xperia Z1

キーアサイン

joystick button 0
joystick button 1
joystick button 2
×
joystick button 3
joystick button 4
L1
joystick button 5
R1
joystick button 6
L2
joystick button 7
R2
joystick button 8
Analog Stick Left Click
joystick button 9
Analog Stick Right Click
joystick button 10
START
joystick button 11
SELECT
joystick button 15
PS BUTTON
X axis
Analog Stick Left ←→
Y axis
Analog Stick Left ↑↓
3rd axis
Analog Stick Right ←→
4th axis
Analog Stick Right ↑↓
5th axis
←→
6th axis
↑↓

2014年3月11日火曜日

アプリからIntent連携でツイートする

こちらの投稿を見て試してみたのでメモしておく。
投稿者の方に感謝。

Android - Twitterに共有するIntentの書き方 - Qiita
http://qiita.com/gari_jp/items/7e30eba5de3b470a59cf

コード

String url = "http://twitter.com/share" +
        "?text=てすと" +
        "&url=http://www.google.com" +
        "&via=kojiokb" +
        "&hashtags=hoge";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

動作確認

上記のコードのIntentの内容ですと、こんな感じに。

以下のTwitterクライアントでツイートできることを確認。
・Twitter公式クライアント
・twicca
・TwitPane

WebのツイートボタンのURLに対応したTwitterクライアントなら、この方法でツイートできるということなのかな?

参考

Tweet Button | Twitter Developers
https://dev.twitter.com/docs/tweet-button

MacなUnityのDUALSHOCK4 キーアサイン

USB接続で確認。
Bluetooth接続はペアリングは成功するが動作せず。

環境

Mac OS X Mavericks 10.9.2
Unity 4.3.4

キーアサイン

joystick button 0
joystick button 1
×
joystick button 2
joystick button 3
joystick button 4
L1
joystick button 5
R1
joystick button 6
L2
joystick button 7
R2
joystick button 8
SHARE
joystick button 9
OPTIONS
joystick button 10
Analog Stick Left Click
joystick button 11
Analog Stick Right Click
joystick button 12
PS BUTTON
joystick button 13
Touch Pad Click
X axis
Analog Stick Left ←→
Y axis
Analog Stick Left ↑↓
3rd axis
Analog Stick Right ←→
4th axis
Analog Stick Right ↑↓
5th axis
L2
6th axis
R2
7th axis
←→
8th axis
↑↓

2014年3月2日日曜日

MacなUnityのDUALSHOCK3 キーアサイン

環境

Mac OS X Mavericks 10.9.2
Unity 4.3.4

キーアサイン

joystick button 0
SELECT
joystick button 1
Analog Stick Left Click
joystick button 2
Analog Stick Right Click
joystick button 3
START
joystick button 4
joystick button 5
joystick button 6
joystick button 7
joystick button 8
L2
joystick button 9
R2
joystick button 10
L1
joystick button 11
R1
joystick button 12
joystick button 13
joystick button 14
×
joystick button 15
joystick button 16
PS BUTTON
X Axis
Analog Stick Left ←→
Y Axis
Analog Stick Left ↑↓
3rd Axis
Analog Stick Right ←→
4th Axis
Analog Stick Right ↑↓

2014年1月19日日曜日

Unity(Android)のShow Loading Indicator

UnityでAndroidビルド向けの[Show Loading Indicator]の動作を確認してみたのでメモ。
Inversedは何が変わるのかよくわからず。

Large

Inversed Large

Small

Inversed Small