Unity3Dである程度自動ビルドする

本記事はQiita投稿記事「Unity3Dである程度自動ビルドする - Qiita」を転記したものです。投稿日はQiitaでの初投稿日に合わせています。

「Unity3Dで自動ビルド? ああ簡単だよ! :smile: 」という割にはいざやってみようとするとめんどくさいでお馴染み(当人調べ)のUnity3Dの自動ビルドの話です。

検索してみると大体必要な情報は引っかかるんですが、何故かシーンのstring[]指定をハードコーディングしなきゃいけないような記述ばっかり見つかるので、そんなんBuild SettingsのScenesから引っ張ったらええやんけ! ということで書いておきます。

なお、

  • エディタ上から実行することを想定しています(コマンドラインからのバッチモードでの動作検証はしていません)
  • Player SettingsやBuild Settingsが予めきちんと設定されていることを想定しています(全部のオプションが触れるわけではないようなので、スクリプトから変更していません)。
  • ビルド先のパス指定はプラットフォームによってフォルダ指定だったり、ファイルそのもの(拡張子含む)の指定だったり、予めフォルダを作っておいてあげないといけなかったりと色々です。
  • よくわかりませんが、 EditorBuildSettings.scenes は最新のドキュメントから省かれています(実行自体は問題ない)。非推奨になったのかもしれませんが使えなくなると影響大きすぎる気がします。

シンプルにしたかったんですが、色々と処理が必要だったので関数ちらほら作ってます。 以下はWindows32のビルドしか書いてませんがもちろん色々と増やしたり出来ます、適当に弄って増やして下さい。

using UnityEngine;
using UnityEditor;
using System;

// Assets/Editorに保存する
public class AutoBuild : MonoBehaviour {

    static BuildTarget workingTarget;
    
    [MenuItem ("Build/Win32Player")]
    static void Windows32Build() {
        SaveWorkingTarget();
        Building( BuildTarget.StandaloneWindows, BuildOptions.None, "Win32/Standalone.exe" );
        //実行ファイル名を指定、この指定だとプロジェクトフォルダ/Win32/Standalone.exeと出力される
        RestoreWorkingTarget();
    }

    static string[] GetAllScenePaths() {
        string[] scenes = new string[EditorBuildSettings.scenes.Length];
        
        for( int i = 0; i < EditorBuildSettings.scenes.Length ; i++ ) {
            scenes[i] = EditorBuildSettings.scenes[i].path;
        }

        return scenes;
    }

    static void Building( BuildTarget target, BuildOptions options, string buildPath) {
        string targetName = Enum.GetName(target.GetType(), target);
        string message = "";
        Debug.Log("Begin Build Player:" + targetName );
        if ( EditorUserBuildSettings.activeBuildTarget != target ) {
            EditorUserBuildSettings.SwitchActiveBuildTarget( target );
        }
        message = BuildPipeline.BuildPlayer( GetAllScenePaths(), buildPath, target, options );
        Debug.Log("End Build Player:" + targetName );
        if ( message != "" ) {
            Debug.LogWarning(message);
        }
    }

    static void Building( BuildTarget target, BuildOptions options) {
        Building( target, options, Enum.GetName(target.GetType(), target) );
    }

    static void SaveWorkingTarget() {
        workingTarget = EditorUserBuildSettings.activeBuildTarget;
    }

    static void RestoreWorkingTarget() {
        if ( workingTarget != EditorUserBuildSettings.activeBuildTarget ) {
            Debug.Log ("Restore Working Target:" + Enum.GetName( workingTarget.GetType(), workingTarget ) );
            EditorUserBuildSettings.SwitchActiveBuildTarget(workingTarget);
        }
    }
}

以下、参考

Unity3DのLoadLevelAsyncとAsyncOperationで非同期ロードを待ってみる

本記事はQiita投稿記事「Unity3DのLoadLevelAsyncとAsyncOperationで非同期ロードを待ってみる - Qiita」を転記したものです。投稿日はQiitaでの初投稿日に合わせています。

なんかまとまった情報が見あたらなかったので書いておく。(Unity3D 4.3.7p3)

Unity - Scripting API: Application.LoadLevelAsync

Unity - Scripting API: AsyncOperation.allowSceneActivation

//C#で
//どっかからコルーチンを呼ぶ
IEnumerator LoadNextLevel() {
        AsyncOperation ao = Application.LoadLevelAsync(nextLevelName);
        ao.allowSceneActivation = false;
        while( ao.progress < 0.9f ) {
        //演出などで確実に待ちを入れたい場合は ( ao.progress < 0.9f || 読み込み時間 < 確実に待たせたい時間 ) みたいな感じで判定
                yield return new WaitForEndOfFrame();
        }
        //次のレベルに遷移
        ao.allowSceneActivation = true;
        //ao.isDoneはfalseのまま
        yield return null;
}

ドキュメントを読んで、じゃあAsyncOperationのisDone見張ってればいいのかな? と思ったらisDoneがいつまで待ってもtrueにならない。 progressも0.9f辺りで止まる。 しかたないのでprogressが0.9f以上になったら読み込みが終わってることにしてallowSceneActivationをtrueにする、特に問題はなさそう。

なんもの音声ログ始めました。(なお、不定期)

なんもの音声ログ|なんも(柳原 隆幸)|note

どうにも思考したことを文章化するのに時間がかかりすぎるので、じゃあそのまま声に出して垂れ流してみたらええやん的なアレです。

直近2回は大体1本15分ぐらいにまとめてあるんですが、まあそれぐらいがバランスいいかと思うので以後それぐらいの長さになると思います。

All You Need Is Killを4dxで見た話|なんも(柳原 隆幸)|note

イベントに参加する・しないの話|なんも(柳原 隆幸)|note

テーマとか何も決まってないので超不定期です。

そういえば最近はnoteに書いてます。

まあ試しに色々書いてみてます。

有料記事も書けますが、お金取れるとかそういうのは元々そういうことやってる人に任せたほうがいいかなと。

感覚的には立ち上がったばっかりのプラットフォームなので、今までにないクラスタと交わったりすることもあるかなという感じです。

どっちに寄せるとかはまだ考えてないです。

ホリ リアルアーケードPro.V4 隼 PC(Windows)接続時のボタン割り当て

本記事はQiita投稿記事「ホリ リアルアーケードPro.V4 隼 PC(Windows)接続時のボタン割り当て - Qiita https://qiita.com/nanmo/items/d2fbdc4993f4bdaa6590」を転記したものです。投稿日はQiitaでの初投稿日に合わせています。

リアルアーケードPro.V4 隼|株式会社HORI

PCボタン名:RAP4のボタン名 PCボタン名はWindows7のコントロールパネル->デバイスとプリンター->ゲームコントローラの設定->プロパティでの表示名 RAPv4の特記事項:各種機能切り替えのスイッチがあるので、スイッチによって機能が変更されるものに関しては [スイッチ名] と付ける

[PS3]側にスイッチを入れた時の割り当て

f:id:nanmo:20200330142449p:plain

X軸:スティック左右[LS]
Y軸:スティック上下[LS]
Z軸:スティック左右[RS]
Z回転:スティック上下[RS]
ボタン1:Square
ボタン2:Cross
ボタン3:Circle
ボタン4:Triangle
ボタン5:L1[L1/L2]
ボタン6:R1
ボタン7:L2(デジタル)[L1/L2]
ボタン8:R2(デジタル)
ボタン9:Share
ボタン10:Option
ボタン11:L3 or L1[L3/R3]
ボタン12:R3 or L2[L3/R3]
ボタン13:PSボタン
ハットスイッチ(POV):スティック上下左右[DP]
TURBOボタン及びF-MODEスイッチは反応なし

[PS4]側にスイッチを入れた時の割り当て

f:id:nanmo:20200330142520p:plain

X軸:スティック左右[LS]
Y軸:スティック上下[LS]
Z軸:スティック左右[RS]
X回転:L2
Y回転:R2
Z回転:スティック上下[RS]
ボタン1:Square
ボタン2:Cross
ボタン3:Circle
ボタン4:Triangle
ボタン5:L1[L1/L2]
ボタン6:R1
ボタン7:L2(デジタル)[L1/L2]
ボタン8:R2(デジタル)
ボタン9:Share
ボタン10:Option or TURBO[F-MODE ON]
ボタン11:L3 or L1[L3/R3]
ボタン12:R3 or L2[L3/R3]
ボタン13:PSボタン
ボタン14:割り当てなし
ハットスイッチ(POV):スティック上下左右[DP]

なんもさんじゅっさい

なんもさんじゅっさいになりました。

なんだかんだとありましたが、全く想定していない人生を突き進んでいる気がします。

とりあえず自分で盛り上げていこうということでFullPowerSideAttack.comの方で今日だけセールをやってます。

20140419 - FullPowerSideAttack[dot]com

まあ、セールと言いつつも自分の手が余りかからない範囲でやってみた感じなんですが。 売上は...まあお察しという感じになるんじゃないかと。

あと、最近は...TorqueLの方はいざ色々手を入れてみると色々出てきたり(いつものこと)。どうもTwitterでつぶやいたののまとめはTogetterの方がアクセス数出るなあ(当たり前か)とか。A1ポスター入稿にA3のデータ突っ込んで再提出したりしてます。

ということで、来週日曜日はM3です。アウェイ感すごい(いつものこと)。

M3 2014春参加概要 - FullPowerSideAttack[dot]com

動画上映コーナーに参加できるということで以前出したPVを素材から再編集とかやってます。締め切りは20日23:59までだそうです、ひぃ。

CD試聴コーナーにはBREAKS LPで出来たリミックスを幾つかサンプルとして突っ込んだCDを置こうか思ったんですが、今回は参加できなかったので今回はとりあえずSoundCloudでどうぞ

まあ一枚焼いちゃってるんですけどね。

あとトラック1にCeVIOで説明用音声突っ込んだりもしてた。

Track.1 BREAKS LP Exported Remix Sample Announce (with CeVIO) | なんも(柳原 隆幸) | note

ということでnoteを始めました。

なんも(柳原 隆幸) (nanmo) | note

試しにTorqueLの公式ガイドブックを置いてみました、途中まで無料です。

TorqueL(トルクル) prototype 2013.03 @ E3 公式ガイドブック(note版) | なんも(柳原 隆幸) | note

近況は以上です。

なんものほしい物リスト

selecterからのメールインタビュー日本語原文

最近始動したブラジルのゲームメディア selecter からメールインタビューの依頼が来ており、大体BitSummit一週間ぐらい前に回答していたのですが、記事が先日公開されました。

Doujin: o cenário independente na terra mãe dos videogames - Mercado

うん、ポルトガル語ですね。

selecterとのやりとりは英語で行いました。 ただ、インタビュー部分については自分の回答(日本語)がどうしても長くなってしまったので、英語翻訳をPLAYISMさんに協力頂きました。

つまり、英語の質問->日本語の回答->回答の英語訳->記事のポルトガル語訳 という形になっています。

ポルトガル語基本読めないのでどういうニュアンスになってるか微妙ですが、翻訳において大体ニュアンスは変わってしまうのと、回答全てが掲載されているわけではないので、以下に回答の日本語原文を載せておきます。

続きを読む