Unity

AndroidのIAPレシートにpackageNameが入っていないことがある

リストアのときはレシート内にpackageNameが含まれなくなったらしい。 UnityIAP1.23.2〜1.23.4までの間は、購入キャンセルしたときに1個前に成功した購入のリストア処理が勝手に走るバグがあり、(1.23.5で修正済み)購入キャンセルしたはずなのにProcessPur…

AnKuchen - UIを作成する際にInspectorにドラッグ&ドロップする必要がなくなります

github.com セットアップ UnityPackageManagerで「AnKuchen」をインストールします。 https://github.com/kyubuns/AnKuchen.git?path=Unity/Assets/AnKuchen UIのルートにUICacheComponentを追加し、Updateボタンを押します。 更新ボタンを押す処理をワーク…

もうUI作るときにInspectorでTextとかButtonをペタペタ登録する作業をやめたい

追記:公開しました → https://blog.kyubuns.dev/entry/2020/09/03/212257 Unity上でUIを作るとき、こんな感じでSerializeFieldにButtonやらTextやらをペタペタ登録するじゃないですか。 そもそもめっちゃ面倒だし、更新したときに参照張り替え忘れるし、や…

TaskとMessageBrokerを活用してゲームロジックを書くとこんなシンプルに書ける

ゲーム開発の入門書の一番最初で「毎フレーム描画処理を挟む必要があるので、こうは書けません。」って言ってくるサンプルコードあるじゃないですか。 あれ、あのまま書けたらめっちゃ良いですよね。という話です。 UniRx, UniTask, TaskMessageBrokerを使い…

BridgeJsCoreUnity - UnityでJavaScriptを走らせる

github.com UnityからJavaScriptを走らせるやつです。iOS, macOS限定です。 もう死語になったUnityScriptではなく、ちゃんとJavaScriptです。 実態はJavaScriptCoreを叩く薄いラッパーです。 jsからC#のメソッドを呼び出す、みたいな高度なことは出来ません…

Unity2019.3以降で新しいキャッシュサーバーUnity Acceleratorをコマンドラインから利用する

2019.3から古いキャッシュサーバーは使えなくなり、UnityAcceleratorになりました。 普通にエディタから使う分にはこちらのページを参考に。 コマンドラインから利用するには -adb2 -EnableCacheServer -cacheServerEndpoint Address:Port を指定する。 これ…

UniTask v2のRCが出たので触ってみた (RC4対応版)

UniTask v2の全機能を紹介してるわけではありません。新機能一覧はReleaseページを追ってください。 RCなので、正式版ではインターフェイスなどもろもろ代わっている可能性があります。 UniTaskのReleaseページから最新版を落として使いましょう。 雑談 Unit…

Haxeで書いたコードをUnity上で動かす時、どれが一番早いのかベンチマーク取ってみた

C#のビルドの長さに耐えられなくなったので、 Haxeで書いたコードをUnity上で動かして、ビルド時間を短くしたい!!!と思い色々調査しています。 今回が、第一回目。 Haxeは色んな言語を出力出来るため、Unity上で動かす方法も色々あります。 ここに乗って…

AppIconChangerUnity - アプリアイコンを動的に変更出来るプラグイン(iOSのみ)

v2をリリースしたので、こちらをご覧ください。

PostProcessingPaletteSwap - PostProcessでカラーパレットの差し替え

github.com PostProcessでカラーパレットを変更できる! カラーパレットは最大256色まで対応 カラーのスプライトを特定ディレクトリに放り込んだら、勝手にカラーパレット対応してくれるエディタスクリプト付き! カラーパレットのサンプル 例えば8色のパレ…

「ここのUIちょっと変えたやつ、実機で見れない?」と言われてから最速で実機確認できるようにする方法

前提 iOSの話をします。きっとAndroidも似たような感じで出来ます。 説明に使っているプロジェクトはこちら。 GitHub:kyubuns/StreamingAssetsDemo 実現出来るようになること このUIを こんな感じに編集したら すぐに手元のiPhoneで新しいUIを確認できる!!…

グローバルなコールバックをTaskに置き換える

Dummy.Run() を呼ぶと、Dummy.Success か Dummy.Failed のどっちかが呼ばれるぜ!みたいなロックなクラスがあるとします。 public static class Dummy { public static void Run() { Debug.Log("Run!"); Observable.Timer(TimeSpan.FromSeconds(1)) .Subscri…

UnityでAndroid App Bundle(AAB)対応してリリースするまで

丁寧に書いてる記事ではなく、同じ問題で困ってる人が見ると良い感じに分かる記事です。 署名する keystoreを作る パスワードは保存されないのでビルド時によしなに設定する。 PlayerSettings.Android.keystoreName = ~~~; PlayerSettings.Android.keystoreP…

Airtableでマスターデータを作ってUnityから読む

ゲームのマスターデータ、何のツールで管理してますか? Excel? GoogleSpreadsheet? Airtableっていうめっちゃ便利なサービスがあります。 GoogleSpreadsheetをマスターデータに使ってる!とか、DBみたいに使ってるならAirtableめっちゃオススメ制約が必ず列…

UnityからiOS,Androidのクリップボードを扱う方法(2019年バージョン)

iOS, Androidのクリップボードを扱う方法をググると、このアセットを入れて〜とか、ネイティブプラグインを〜とかいう記事が色々出てきますが、そんな時代は終わりました。 Unity2018.1以降ならこれでいけます。 Debug.Log($"クリップボードのテキスト = {GU…

プロジェクト内の全てのPrefabに対してなんかする

ああ〜〜プロジェクト内の全てのPrefabのTextComponentの色変えて〜 using System.IO; using UnityEditor; using UnityEngine; using UnityEngine.UI; namespace Sandbox { public static class ReimportPrefab { [MenuItem("Sandbox/ReimportPrefab")] publ…

Unity2018.3から[SerializeField] privateが未初期化警告(CS0649)を吐くようになった

Unity2018.3から [SerializeField] private GameObject hoge; というコードが [CS0649] Field 'Piyo.hoge' is never assigned to, and will always have its default value null という警告を吐くようになりました。 警告の詳細はこちら(CS0649)。 冷静に考…

プロジェクト内の全てのPrefabを新しいUnityバージョンのフォーマットに変換する

Unity2018.3からPrefabWorkflowが新しくなりました。 これによりPrefab編集用シーンがすぐに開けるようになったりともろもろ最高です。 詳細はこちら。 https://blogs.unity3d.com/jp/2018/06/20/introducing-new-prefab-workflows/ この変更に伴い、.prefab…

UnityEditor上で2つの画像を重ね合わせる

例えばアイテムのアイコンにレアリティの枠をつけるとか、そういうときに使うやつです。 サクッと書けるかと思ったらアルファの計算が思ったより面倒くさかったのでメモ。 public void CreateTexture(string baseImagePath, string frameImagePath) { // Tex…

AnimeTask - Unity + asyncawaitでTweenアニメーションをつける!

github.com Task(async/await)ガンガン使ってる方向けのTweenアニメーションライブラリです。 AnimeRxのTask版です。 リポジトリ Unity2017.1から動きます。(.net4.6を有効にする必要があります。) Unity2018.3bでも動作確認済みです。 kyubuns/AnimeTask コ…

Unity x fastlaneでビルドするときに便利なやつメモ

Unity(実行ファイル)のパス取得 def get_unity_path(project_path) unity_version = File.read("#{project_path}/ProjectSettings/ProjectVersion.txt").split(" ")[1].strip unity_path = "/Applications/Unity#{unity_version}" unity_path = "/Applicatio…

UnityプロジェクトのiOSビルドをなるべく早くする

Unityでゲームを作っていて、「開発チーム内に共有する開発者向けビルドをなるべく早くしたい!」というお話です。 リリースビルドには使わないほうが良いオプションが多数登場します。 UnityからXCodeプロジェクトを出力した後は、fastlaneを利用してビルド…

fastlaneからUnityのメソッドを叩く

今までシェルスクリプトから「Unityを叩いてXCodeプロジェクトを吐かせる→fastlaneを呼び出してipa作る」としていたところを、 全部fastlane内にまとめられたほうが綺麗かも って思ったので作りました。 ProjectVersion.txtからUntiyVersionを取ってきて、そ…

AnimeRx - Unity + RxでTweenアニメーションをつける!

github.com UniRxガンガン使ってる方向けのTweenアニメーションライブラリです。 コンセプト アニメーションライブラリといいつつも、TransformやGameObjectは握らず、 素直に IObservable(float,Vector2,Vector3)を操作するライブラリ。 (下記サンプル内の"…

UniRx.MessageBroker活用術

UniRx.MessageBrokerを日々 悪用 活用してるので、便利かも!って作ったクラスを公開しておきます。 TypedMessageBroker MessageBrokerのPublish/Subscribeに型で制限をつける。 用途 Brokerがたくさんあるので、送り先を間違えるのを防ぐ。 サンプル public…

CoroutineとPubSubでゲームフローを制御する

1週間ゲームジャム お題「space」を見て、 宇宙で駐車スペースに駐車するゲームという物理演算ドタバタゲーを作ったので、 せっかくなら技術解説記事でも書こうと思い立った次第です。 利点 PubSubでフローを管理することで、クラス間の依存が少なく出来てサ…

ScenePrefabを読む

まだUnity4.xだった時代の記事です。 Scene/Prefabファイルをテキストエディタで編集できるようになるための情報をまとめておきたいと思います。 この記事を読むと prefabファイルのコンフリクトが解決できるようになる・・・かもしれませんが、 たいていぶ…