さけのさかなのブログ

同人ゲーム開発やってます。Unity使ったりする。

Unity

TextMeshProでMaterial Iconsを表示する

GoogleFontで配布されているMatrialIconsはフォント形式でも配布されており、Unityに組み込むことができる。 1.フォントファイルダウンロード github.com ちなみにライセンスはApache License 2.0。 2.TextMeshProの設定 表示させたいアイコンのcode pointを…

TextMeshProのDynamicFontで表示がおかしくなる場合

TextMeshPro(最新3.0.6)ではDynamicFontの扱いがいまだに面倒で、文字が正確に表示されなくなる場合がある。 DynamicFontではフォントテクスチャがいっぱいにならないよう、適宜ClearFontAssetDataを呼び、テクスチャに空きを確保しなくてはならない。 コ…

【Unity】PhysicsCamera

Unity2018には既にあった機能なので今更感!はあるんだけど、存在に最近気づいたので便利だったので記事にしておく。 機能自体は次の記事で解説されている。 light11.hatenadiary.com 何が嬉しいか Lens Shift レンズシフト機能をゲームで使うと何が嬉しいか…

【Unity】Application.persistentDataPathの指すフォルダを開くエディタ拡張

セーブデータとか確認するのに使う。 github.com

InputActionの各種コールバック購読をIDisposableで扱う拡張メソッド

InputActionのperformed、started、canceledコールバックはマルチキャストっぽいインターフェースになっており、+演算子でAction追加、-演算子で削除を行うようになっている。 inputAction.performed += _ => {}; このままでは使いづらいので作ったのがこの…

【Unity】InputSystem使ってみた

導入するうえで検索しづらかった機能について。 コードで入力を受け付けたい : InputActionReference 実は自動生成クラスは不要で、インスペクタで参照設定すればできる。 [SerializeField] InputActionReference submit = default; void Start() { submit.T…

Unityでnull許容参照型を使ってみた

Unityでもnull許容参照型。どう書くか好みの別れそうな部分があったので、個人的な方針。 Unity 2021.1.7f1。 1.どう有効にするか コンパイラオプションでプロジェクト全体を有効にできるけど、それではアセットのコードなんかも影響して警告を出し始めるの…

【Unity】セーブデータにサムネイルを含める

やること セーブデータ一覧で、ゲーム画面がサムネで表示されてるやつ。 コード public async UniTask<byte[]> GenerateThumbnail(MonoBehaviour coroutineRunner) { Texture2D thumbnail = null; await TextureUtil.CaptureScreenshot(width, height, _ => thumbnai</byte[]>…

【Unity】ビルド後にlightmapが反映されなくなる場合

Graphics->Shader Stripping->LightmapModesがCustom設定になっている場合がある。 チェックボックスを直すか、Automaticに設定する 参考 【Unity】なんか影が出ない問題の対策 - テラシュールブログ これやっとけばライトマップは焼ける!Unity 2018 ライテ…

【Unity】シーンのプリロード

書いた。 やっていることは単純なもので、裏でシーンのロードを行い、ロードできた瞬間にGameObjectを非アクティブにしておく。使う時になったらアクティブ状態を戻してやる。 本当はallowSceneActivation=falseでとめておきたかったんだけど、これをやるとR…

【Unity】A-star経路探索

書いた github.com あとから気が付いて修正したんだけど、ゴールを複数投げれば最も近いゴールへの経路を返す動きにすることができる。これが便利。 探索結果は蓄積するのでインスタンスを使いまわすと性能がよくなる(はず)。

【Unity】テクスチャのダイシング

やること テクスチャを賽の目に切って扱うことで容量を小さくすることができる。そのコードを書いた。 簡単なものだけどテクスチャのダイシング処理。何が美味しいかというとatlas化したときで、サンプルの1905x1920のテクスチャが2048x1024に収まる。https:…

【Unity】シーン遷移処理パッケージ

シーン遷移時にはゲームごとの処理として フェードインアウト演出 ローディングゲージ表示 を入れたくなるんだけど、それに対応できるようにしてある。 github.com

【Unity】TiledMapEditorのxmlデシリアライザ

こういうツールがあって www.mapeditor.org その吐き出すxmlファイルをUnityでデシリアライズするためのライブラリパッケージ。 github.com

【Unity】麻雀ライブラリ 2

前回の麻雀ライブラリをちょいちょいバージョンアップし、機能追加した。詳しくはREADMEに書いてある。 優先行動処理 チーよりポンの方が優先して実行するとかの対応。 シリアライズ処理 状態をjson文字列にシリアライズできる。保存、通信、巻き戻しとかに…

【Unity】麻雀ライブラリ

github.com 何をするライブラリなのか 麻雀のルール部分を実装したライブラリです。 卓上にある牌を管理して、鳴いたりロンしたりといったAPIを提供します。 あるのはルール部分の実装のみなので、「牌を画面に表示する」「ユーザー操作を受け付ける」「AIが…

【Unity】CameraのViewportRectのレイアウトが崩れないようにする

Cameraのスクリーン上の描画範囲はViewportRectによって設定できる。が、そのままだと使いづらいので、補助のためのスクリプト。 具体的には画面アスペクト比が変化してもレイアウトが崩れないようにできる。(UIのCanvasScalerと同じような感覚で使える) g…

【Unity】自作パッケージのサンプル作成

ようやく自作パッケージのサンプルコードに着手しはじめた。とりあえず分かりづらそうなところで、翻訳、ルビ表示、ファイル読み書き。 github.com github.com github.com サンプルコードはpackageManagerからインポートできる。 参考 https://forum.unity.c…

【Unity】音まわりパッケージ

ナニコレ そろそろ音まわりの処理が共通化できそうだなーということでやってみる。 とはいえ音に関してはこだわったことをしたことがないので、機能は必要最低限という感じ。FPSなんか作るともう少し演出的にやるべきことができるんだろうけど…。 リポジトリ…

【Unity】Googleスプレッドシートの値を取得する・2

やること 非公開設定のスプレッドシートからセルの内容を読み込む 環境:Unity2019.2.17、UniTask、Utf8Json 参考:前の記事 toriden.hatenablog.com 手順 1. クライアントID、クライアントシークレット発行 GoogleCloudPlatformでクライアントIDとクライア…

【Unity】雑にUtf8Json

Utf8JsonでDictionary<string, object>とかをガッとシリアライズできるようにします。 初期化 Utf8Json.Resolvers.CompositeResolver.RegisterAndSetAsDefault( new[] { Utf8Json.Formatters.PrimitiveObjectFormatter.Default }, new[] { Utf8Json.Resolvers.GeneratedResol</string,>…

【Unity】古いMiniJsonは使うな

以下のコードでバグがでる。 System.Globalization.CultureInfo.CurrentCulture = System.Globalization.CultureInfo.GetCultureInfo("fr-FR"); var dict = new Dictionary<string, object>(); dict["hoge"] = 1.5f; var jsonString = MiniJSON.Json.Serialize(dict); // {"h</string,>…

【Unity】UIをキーボードから操作するサンプル

UnityUIのボタンやらをキーボードで操作するサンプルプロジェクト。動画の前半はマウスで、後半はキーボードで操作している。https://t.co/QBPndoJgu8#gamedev pic.twitter.com/xIu8ziI8dS— enu@C97火南モ06b (@_enu) 2019年12月1日 github.com なんかの拍子…

【Unity】アツマールにUnityWebGLをアップロードするときの画面サイズ対応

やること UnityWebGLビルドをRPGアツマールにアップロードした場合、そのままだと画面サイズが固定になってスマホで遊べない。のでその対応。 index.htmlの書き換え bodyタグを以下のようにする。0.75というのがアスペクト比4:3の数値。 <body> <div id="unityContainer" style="width: 100%; height: calc(100vw * 0.75);"></div> </body> 参考 [css]アスペ…

【Unity】RPGアツマール対応

やること UnityでつくったゲームをRPGアツマールに対応させる。 使ったUnityのバージョンは2019.3.0f1。 成果物 game.nicovideo.jp 0.ググれ すでにネット上に記事があるので、「Unity アツマール」とかでググりましょう。 1.最小構成 まずは動かす game.nic…

【Unity】押したら凹むボタン

結局Animationじゃなくてスクリプトで書くことにする、押したら凹むボタン pic.twitter.com/ngoZbMKZsV— enu@C97火南モ06b (@_enu) 2019年11月11日 凹むっつってもスケールを小さくするだけですが。 ボタンの押下時アニメーションはデフォルトだとColorTint…

【Unity】パッケージ自作:翻訳とロードと乱数

翻訳対応 機能自体はすでに作ったものがあったんだけど、パッケージとして上手く切り分けられなくてどうしたもんかなーという感じで。が、いい加減観念してとにかくパッケージ化することにした。 翻訳処理はいまUnity公式で開発中らしいんだけど、まあ待って…

【Unity】2019.2のAssertは例外を投げる

Unity2019.2を試したところ、どうも処理が途中で止まっているっぽい?ということで見てみたところ、Assertで警告が出るとそれ以降の処理が為されていない模様。 この警告、例外をスローしている。 変更 2019.1 2019.2 という感じ。前からもAssert.raiseExcep…

【Unity】フェードつき文字送り

フェードで文字表示 pic.twitter.com/OgozmHdjPm— enu@遊宴雀2 雀-17 (@_enu) 2019年7月23日 packge github.com コード 本文用のTextコンポーネントを作成する。 本文用のオブジェクトにFadeInQuadByQuadをアタッチする ルビ用のTextコンポーネントを作成す…

【Unity】UI.Textで禁則処理つき改行

ルビ表示+リッチテキスト+禁則処理つき改行+文字送り。 pic.twitter.com/IcZt1Nzglh— enu@遊宴雀2 雀-17 (@_enu) 2019年7月22日 Package github.com コード [SerializeField] RubyText ruby; [SerializeField] Text body; IEnumerator Start() { var mess…