20190727のUnityに関する記事は6件です。

UnityのAndroid実機ビルドでつまづいた話

初投稿です

経緯

久々にUnityでAndroid開発を行おうとするとエラーが出てビルドできない
割とあるあるなのでいつも通り検索をかけたが,表示されているエラーに引っかかるものはなかった
エラーは以下の通り

Unable to start ADB server. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.

使用環境

Windows 10

Unity
2018.4 LTS
2019.1

Android Studio
3.4.2

Galaxy Note 9
OS Android9.0 Pie

試したこと

まず疑ったのはUnityの設定
SDKのパスを確認したが問題なかった
バージョンを変更してみるも変わらず
次に疑ったのはAndroid Studioで以前使っていたバージョンは古かったため誤作動が起こっていると予想した
再インストールしてもSDKが更新されないことがあるため,関連ファイルを削除して再インストールを行ったが変化なし

悩んだ結果

ADBサーバが起動しないと言っているけどコマンドは
なぁ...
端末もキチンと認識しているし,デバイスマネージャーでも確認できる
ドライバも生きてるしエクスプローラで端末内に参照もかけられる...

adbで端末の認識は...しない!?
adb devicesで表示される端末
まさかのゼロ

List of devices attached
adb server version (32) doesn't match this client (36); killing...
error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:503could not read ok from ADB Server
7: 通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 (10048)
* failed to start daemon *
error: cannot connect to daemon

これはUSBドライバが怪しいなと思い更新してみた
駄目だった

USB転送モードのせいかと確認してみる
ファイルを転送になっている...ん?
そういえばadb devicesで127.0.0.1って見たな
もしかしてUSBテザリングか??
--追記--
ファイル転送でも認識することは確認した

認識した!!!!

私が以前メインで使っていたのはAndroid4.2のZ Ultraで
MTP通信を選択していたのでてっきりファイル転送かと思ったけど
こんなのわかるか!

そんなこんなでBuild And Runできました!

まとめ

  • adb devicesで端末が認識されるか確認
  • 認識されていなければAndroidの設定を疑う
  • 設定があっていればUSBドライバを疑う

Android StudioとかUnityの環境を疑うのは最後にしよう
環境構築めんどくさいし

--追記--
またビルドできなくなりました
原因がわかり次第追記しようと思います

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

UnityのAndroid実機ビルドでつまづいた話その1

初投稿です

経緯

久々にUnityでAndroid開発を行おうとするとエラーが出てビルドできない
割とあるあるなのでいつも通り検索をかけたが,表示されているエラーに引っかかるものはなかった
エラーは以下の通り

Unable to start ADB server. Please make sure the Android SDK is installed and is properly configured in the Editor. See the Console for more details.

使用環境

Windows 10

Unity
2018.4 LTS
2019.1

Android Studio
3.4.2

Galaxy Note 9
OS Android9.0 Pie

試したこと

まず疑ったのはUnityの設定
SDKのパスを確認したが問題なかった
バージョンを変更してみるも変わらず
次に疑ったのはAndroid Studioで以前使っていたバージョンは古かったため誤作動が起こっていると予想した
再インストールしてもSDKが更新されないことがあるため,関連ファイルを削除して再インストールを行ったが変化なし

悩んだ結果

ADBサーバが起動しないと言っているけどコマンドは
なぁ...
端末もキチンと認識しているし,デバイスマネージャーでも確認できる
ドライバも生きてるしエクスプローラで端末内に参照もかけられる...

adbで端末の認識は...しない!?
adb devicesで表示される端末
まさかのゼロ

List of devices attached
adb server version (32) doesn't match this client (36); killing...
error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:503could not read ok from ADB Server
7: 通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。 (10048)
* failed to start daemon *
error: cannot connect to daemon

これはUSBドライバが怪しいなと思い更新してみた
駄目だった

USB転送モードのせいかと確認してみる
ファイルを転送になっている...ん?
そういえばadb devicesで127.0.0.1って見たな
もしかしてUSBテザリングか??
--追記--
ファイル転送でも認識することは確認した

認識した!!!!

私が以前メインで使っていたのはAndroid4.2のZ Ultraで
MTP通信を選択していたのでてっきりファイル転送かと思ったけど
こんなのわかるか!

そんなこんなでBuild And Runできました!

まとめ

  • adb devicesで端末が認識されるか確認
  • 認識されていなければAndroidの設定を疑う
  • 設定があっていればUSBドライバを疑う

Android StudioとかUnityの環境を疑うのは最後にしよう
環境構築めんどくさいし

--追記--
またビルドできなくなりました
原因がわかり次第追記しようと思います
続き書きました

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AndroidStudioを用いないUnityでのAndroidX対応

はじめに

AdMobで play-services-adsのバージョン18.0.0以降を使用する場合は AndroidXへの移行が必須となる
AndroidXとは

AndroidStudioを用いたAndroidXへの移行はこちらのサイトに説明があるが、AndroidStudioを用いずにUnity単体での対応方法がなかったためメモしておく

実装環境

  • Unity 2019.1.7f1
  • Google Mobile Ads Unity Plugin v3.17

対処方法

  • build.gradleファイルを書き換えるスクリプトを記述する
  • AndroidSupportのライブラリをAndroidX用に変更する

build.gradleファイル書き換え

AndroidX対応に必要な android.useAndroidX=trueandroid.enableJetifier=true を追加

Editor/Build/AndroidPostBuildProcessor
using System.IO;
using UnityEditor.Android;

namespace Editor.Build
{
    public class AndroidPostBuildProcessor : IPostGenerateGradleAndroidProject
    {
        /// <summary>
        /// 実行順を指定(0がデフォルト、低いほど先に実行される)
        /// </summary>
        public int callbackOrder => 999;

        /// <summary>
        /// build.gradleをビルド時に書き換える
        /// </summary>
        void IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject(string path)
        {
            var gradlePropertiesFile = path + "/gradle.properties";
            if (File.Exists(gradlePropertiesFile))
            {
                File.Delete(gradlePropertiesFile);
            }

            var writer = File.CreateText(gradlePropertiesFile);
            writer.WriteLine("org.gradle.jvmargs=-Xmx4096M");
            writer.WriteLine("android.useAndroidX=true");
            writer.WriteLine("android.enableJetifier=true");
            writer.Flush();
            writer.Close();
        }
    }
}

AndroidSupportのライブラリをAndroidX用に変更

バージョンや名前は2019年7月時点で最新のもの、最新状態はmvnrepository等のサイトで調べる

旧版
    compile group: 'com.android.support', name: 'customtabs', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-annotations', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-compat', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-core-ui', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-core-utils', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-fragment', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-media-compat', version: '28.0.0'
    compile group: 'com.android.support', name: 'support-v4', version: '28.0.0'
    compile group: 'com.android.support', name: 'recyclerview-v7', version: '28.0.0'
    compile group: 'com.android.support', name: 'appcompat-v7', version: '28.0.0'
    compile group: 'com.android.support', name: 'cardview-v7', version: '28.0.0'
    compile group: 'com.android.support.constraint', name: 'constraint-layout-solver', version: '1.1.3'
    compile group: 'com.android.support.constraint', name: 'constraint-layout', version: '1.1.3'
AndroidX対応版
    compile group: 'androidx.browser', name: 'browser', version: '1.0.0'
    compile group: 'androidx.annotation', name: 'annotation', version: '1.1.0'
    compile group: 'androidx.core', name: 'core', version: '1.1.0-rc02'
    compile group: 'androidx.legacy', name: 'legacy-support-core-ui', version: '1.0.0'
    compile group: 'androidx.legacy', name: 'legacy-support-core-utils', version: '1.0.0'
    compile group: 'androidx.fragment', name: 'fragment', version: '1.1.0-rc03'
    compile group: 'androidx.media', name: 'media', version: '1.1.0-rc01'
    compile group: 'androidx.legacy', name: 'legacy-support-v4', version: '1.0.0'
    compile group: 'androidx.recyclerview', name: 'recyclerview', version: '1.1.0-beta01'
    compile group: 'androidx.appcompat', name: 'appcompat', version: '1.1.0-rc01'
    compile group: 'androidx.cardview', name: 'cardview', version: '1.0.0'
    compile group: 'androidx.constraintlayout', name: 'constraintlayout-solver', version: '2.0.0-beta2'
    compile group: 'androidx.constraintlayout', name: 'constraintlayout', version: '2.0.0-beta2'
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

我流VRMMOゲーム制作法(要点まとめ)

VRMMOゲームが作りたい!

私はVRMMOゲームを制作しています。
現在は仕様を練っている所です。

今回の記事が、私と同様VRMMOゲームを作ろうとする人の役に立つ事を願います。

制作環境

まず、ゲーム制作環境ですが、Unityにて開発、steamへアップロードを想定しています。
これは、OpenVR SDKやsteamVR pluginを初めとした外部技術導入の容易さからです。

以下に私の使用する外部技術を挙げます。

OpenVR SDK:UnityゲームをVR対応にする為に用います。情報が少ないです。

steamVR Plugin:ゲームをVR対応にする為に用います。こちらはカメラや各種コントローラ入力を扱います。

steamworks SDK,API:課金やアップロードなどを扱います。クライアント・自分のサーバ・steam WEB APIサーバでやり取りします。

随時記事を更新作成します。

ログイン

次に、ログイン機能についてです。

ログインにおいてはクライアント、サーバ間のやり取りが必要となります。
参考までに、

クライアントから、IDとパスワード、アバター情報をサーバに送信します。

VRM-FBX-JSONは相互変換可能です。アバター情報をJSON形式化します。

  1. クライアント:Unity及びPHPを用いてテキストデータ及びJSON形式データをHTTPにて送信

  2. サーバ:nginxにてテキストデータを取得、PHPを介してテキストデータをMySQLへ格納
    2.1 PHPにてアバターデータを取得、PHPを介してJSON形式データをMySQLへ格納

3.サーバ内でデータを照合します。ハッシュ化された値が正しいか確認。暗号化はダメです。復号されてしまうので。

4.データが正しい場合、PHPを介してサーバからクライアントへ照合完了を伝え、ログイン完了となります。

情報照合方法は改めて検討します。

また、細かな手続きについては都度記事を更新作成します。

アバター生成

JsonUtilityを用いて、MySQLから取り出したJSONをアバターに復元します。

90fpsの維持

1.クライアントは、Unity,C++を用いて、常時アバターの位置情報とアクション内容情報をJSON形式でUDPにてサーバに送信します。

同時に、サーバから情報を受け取った場合、空間情報を全て更新します。

2.サーバは、クライアントから受け取ったJSON情報を元に、各々、位置、アクション情報を更新します。

その後、更新したJSON情報をサーバ間で同期します。

最後に、同期された情報をクライアントへUDPにてJSON情報を送信します。

3.クライアントは受け取ったJSONデータを元に空間を再構成します。

これを1秒間に180回行います。UDP通信なので半分の通信は失敗する想定です。

細かな手続きは随時記事を作成更新します。

実験してみないと分からない事が多いです。

最後に

VRMMOゲームのシステムについて考えてみました。

一緒に作りたいという方は連絡下さい。作りましょう。

ご意見のある方がいらっしゃいましたら、アドバイスを下さい。

分からない事が多い為、情報提供頂けると助かります。

よろしくお願いします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

VRMMOゲーム制作における要点をまとめました

VRMMOゲームが作りたい!

私はVRMMOゲームを制作しています。
現在は仕様を練っている所です。

今回の記事が、私と同様VRMMOゲームを作ろうとする人の役に立つ事を願います。

制作環境

まず、ゲーム制作環境ですが、Unityにて開発、steamへアップロードを想定しています。
これは、OpenVR SDKやsteamVR pluginを初めとした外部技術導入の容易さからです。

以下に私の使用する外部技術を挙げます。

OpenVR SDK:UnityゲームをVR対応にする為に用います。情報が少ないです。

steamVR Plugin:ゲームをVR対応にする為に用います。こちらはカメラや各種コントローラ入力を扱います。

steamworks SDK,API:課金やアップロードなどを扱います。クライアント・自分のサーバ・steam WEB APIサーバでやり取りします。

随時記事を更新作成します。

ログイン

次に、ログイン機能についてです。

ログインにおいてはクライアント、サーバ間のやり取りが必要となります。
参考までに、

クライアントから、IDとパスワード、アバター情報をサーバに送信します。

VRM-FBX-JSONは相互変換可能です。アバター情報をJSON形式化します。

  1. クライアント:Unity及びPHPを用いてテキストデータ及びJSON形式データをHTTPにて送信

  2. サーバ:nginxにてテキストデータを取得、PHPを介してテキストデータをMySQLへ格納
    2.1 PHPにてアバターデータを取得、PHPを介してJSON形式データをMySQLへ格納

3.サーバ内でデータを照合します。ハッシュ化された値が正しいか確認。暗号化はダメです。復号されてしまうので。

4.データが正しい場合、PHPを介してサーバからクライアントへ照合完了を伝え、ログイン完了となります。

情報照合方法は改めて検討します。

また、細かな手続きについては都度記事を更新作成します。

アバター生成

JsonUtilityを用いて、MySQLから取り出したJSONをアバターに復元します。

90fpsの維持

1.クライアントは、Unity,C++を用いて、常時アバターの位置情報とアクション内容情報をJSON形式でUDPにてサーバに送信します。

同時に、サーバから情報を受け取った場合、空間情報を全て更新します。

2.サーバは、クライアントから受け取ったJSON情報を元に、各々、位置、アクション情報を更新します。

その後、更新したJSON情報をサーバ間で同期します。

最後に、同期された情報をクライアントへUDPにてJSON情報を送信します。

3.クライアントは受け取ったJSONデータを元に空間を再構成します。

これを1秒間に180回行います。UDP通信なので半分の通信は失敗する想定です。

細かな手続きは随時記事を作成更新します。

実験してみないと分からない事が多いです。

最後に

VRMMOゲームのシステムについて考えてみました。

一緒に作りたいという方は連絡下さい。作りましょう。

ご意見のある方がいらっしゃいましたら、アドバイスを下さい。

分からない事が多い為、情報提供頂けると助かります。

よろしくお願いします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

我流VRMMOゲーム制作法(要点)

VRMMOゲームが作りたい!

私はVRMMOゲームを制作しています。
現在は仕様を練っている所です。

今回の記事が、私と同様VRMMOゲームを作ろうとする人の役に立つ事を願います。

制作環境

まず、ゲーム制作環境ですが、Unityにて開発、steamへアップロードを想定しています。
これは、OpenVR SDKやsteamVR pluginを初めとした外部技術導入の容易さからです。

以下に私の使用する外部技術を挙げます。

OpenVR SDK:UnityゲームをVR対応にする為に用います。情報が少ないです。

steamVR Plugin:ゲームをVR対応にする為に用います。こちらはカメラや各種コントローラ入力を扱います。

steamworks SDK,API:課金やアップロードなどを扱います。クライアント・自分のサーバ・steam WEB APIサーバでやり取りします。

随時記事を更新作成します。

ログイン

次に、ログイン機能についてです。

ログインにおいてはクライアント、サーバ間のやり取りが必要となります。
参考までに、

クライアントから、IDとパスワード、アバター情報をサーバに送信します。

VRM-FBX-JSONは相互変換可能です。アバター情報をJSON形式化します。

  1. クライアント:Unity及びPHPを用いてテキストデータ及びJSON形式データをHTTPにて送信

  2. サーバ:nginxにてテキストデータを取得、PHPを介してテキストデータをMySQLへ格納
    2.1 PHPにてアバターデータを取得、PHPを介してJSON形式データをMySQLへ格納

3.サーバ内でデータを照合します。ハッシュ化された値が正しいか確認。暗号化はダメです。復号されてしまうので。

4.データが正しい場合、PHPを介してサーバからクライアントへ照合完了を伝え、ログイン完了となります。

情報照合方法は改めて検討します。

また、細かな手続きについては都度記事を更新作成します。

アバター生成

JsonUtilityを用いて、MySQLから取り出したJSONをアバターに復元します。

90fpsの維持

1.クライアントは、Unity,C++を用いて、常時アバターの位置情報とアクション内容情報をJSON形式でUDPにてサーバに送信します。

同時に、サーバから情報を受け取った場合、空間情報を全て更新します。

2.サーバは、クライアントから受け取ったJSON情報を元に、各々、位置、アクション情報を更新します。

その後、更新したJSON情報をサーバ間で同期します。

最後に、同期された情報をクライアントへUDPにてJSON情報を送信します。

3.クライアントは受け取ったJSONデータを元に空間を再構成します。

これを1秒間に180回行います。UDP通信なので半分の通信は失敗する想定です。

細かな手続きは随時記事を作成更新します。

実験してみないと分からない事が多いです。

最後に

VRMMOゲームのシステムについて考えてみました。

一緒に作りたいという方は連絡下さい。作りましょう。

ご意見のある方がいらっしゃいましたら、アドバイスを下さい。

分からない事が多い為、情報提供頂けると助かります。

よろしくお願いします。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む