きゅぶろぐ

きゅぶんずの ぶろぐができて べんりだな

Unity

Unity Editorでsvgからpngを作る

using System.IO; using AkyuiUnity.Editor.Extensions; using Unity.VectorGraphics.Editor; using UnityEditor; using UnityEngine; namespace Sandbox { public static class SvgToPng { public static byte[] Convert(string svg, Vector2Int size) { va…

常用漢字を突っ込むのはもうやめ!Adobeが定めた良い感じの日本語文字セットをTextMeshProで使う

Adobe-Japan1 文字コレクションって? 先日、Fontworksさんがゲームにも使えるライセンスでフォントを無償公開してましたね! めっちゃ良い!これ使おう!!と思ってフォントの詳細ページを見ると 収録文字 Adobe-Japan1-4の全グリフ GF Latin Core という表…

Unityで画面に描画せずにテキストの幅と高さを取る方法

var fontAsset = AssetDatabase.LoadAssetAtPath<Font>(fontPath); var settings = new TextGenerationSettings { generationExtents = Vector2.zero, textAnchor = TextAnchor.MiddleCenter, alignByGeometry = false, scaleFactor = 1.0f, color = Color.white, </font>…

球の表面のuvを回転するシェーダー

百聞は一見に如かず で。 球のtransformを変更せずに球を回転させたい時どうすれば良いか。 テクスチャだけ回転させてしまえば良いのです! まあ、そんな機会めったにないと思いますが、めったに無いからこそググってもあんまり出なかったので貼っときます。…

Unity2020.2でnull許容参照型を使う

null許容参照型って? ドキュメントを読みましょう。 これが欲しかった!最高! Unityで使うには辛さがある SerializeFieldは#nullable enableで囲う。とかは良いとして、 public class Hoge : MonoBehaviour { private HogeComponent _cache; public void S…

Unityの物理演算使ってると、すぐに物が吹っ飛ぶんだけど?って時に読む記事

板を2秒時点で下にずらして、さらに2秒後に元の高さに戻すデモ はじめに ゲームで使う物体のサイズ感、質量、求めている精度によってパラメーター調整を行う必要があるので、これが正解!みたいな数値があるわけじゃありません。 MaxDepenetrationVelocity P…

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のみ)

github.com iOS限定です iOS 10.3以降でしか動きません。 SupportsAlternateIcons で動くかどうかはチェック出来ます。 AlternateIconについて iOS 10.3で追加された機能で、当時は「これでゲームアプリのアイコンが推しのアイコンに変更できるようになるん…

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)を操作するライブラリ。 (下記サンプル内の"…