7080 + 1

ゲームプログラミングの記事を書いてます。

【Unity】Gizmoの表示状態をスクリプトから制御する

シーン内のGameObjectの数が増えてくると、シーンに表示されているGizmoの数がとんでもないことになって、何がなんやらわからなくなってくることがあります。 それらをコンポーネントごとに表示、非表示を切り替えるには、GUI上でのみ設定可能でした。 (リフ…

【Unity】EditorWindowを定義しているスクリプトをすぐに探せるようにする

はじめに ゲームを開発していると、EditorWindowを継承して、そのゲーム専用のエディタウィンドウを作成することがよくあるかと思います。 開発が進むと、いろんな人がエディタウィンドウを新しく定義して、エディタウィンドウが増えていくこともあるかと思…

【Unity】Unity上で直接metaファイルの中身を見られるようにする

Unity での開発中、アセットの meta ファイルを見たくなることがたまにあります。 わざわざエクスプローラーを開いて meta ファイルをテキストエディタで開くのは少し手間です。そこで、Unity 上で直接アセットの meta ファイルを開けるようにしてみます。 …

【Unity】GameObjectを配置せずに、オブジェクトを描画する【RenderMesh】

突然ですが、以下の画像を見てください。 シーンに赤い立方体が10個存在しているなんてことないシーンですが、ヒエラルキーには GameObject が3つしかありません。 どういうことでしょうか?? Graphics.RenderMesh Unity で何かキャラクターなどの3Dモデル…

【Unity】Gizmoの表示非表示をスクリプトから操作する【Annotation】

Gizmo の表示非表示は、シーンビュー右上のアイコンからそれぞれ表示したいものにチェックを入れることで制御可能です。 いつからから検索もできるようもなり、さらに便利になりました。 が、これを1つずつ手作業でやるのは大変です。 スクリプトから制御で…

【Unity】矩形の空間を定義、シーン上でいじれる処理を書いてみる【BoxBoundsHandle】

ゲームを作っていると、ゲーム空間の中にエリアを定義したくなることがあると思います。 今回はそれをシーン上で調整できるようにする BoxBoundsHandle を紹介します。 とりあえずシーンに矩形を描画してみる 単純にシーン上で範囲を表すために図形を描画し…

【Unity】インスペクタ拡張で元のスクリプトを表示する

何もインスペクタ拡張をしていない場合、コンポーネントにはそのスクリプトが ObjectField で表示されます。 これをクリックするとスクリプトの場所を教えてくれるため、意外と便利です。 public class Example : MonoBehaviour { [SerializeField] int exam…

【Unity】UIToolKitの機能だけでスマホみたいなフッターUIを作ってみる

UIToolKit の勉強中です。 UIToolKit は HTML+CSS を参考に作られています。 なので「既存の HTML+CSS の動画とか参考にすればいい感じのUIを作れるのでは?」と思いました。 できたのがこんな感じのスマホのようなフッターUIです。 参考動画は HTML+CSS で…

【Unity】タブUIを実装してみる【UIToolkit】

最近 UIToolKit を勉強しています。 PlayMode 中での実装例もちょこちょこ聞くようになってきて、そろそろ IMGUI から卒業するための準備をしないとまずいかもと思っているからです。 これとか→UI Toolkitを使用したランタイムツールの開発事例紹介 - YouTub…

【Unity】配列のラベルを型名に変更するPropertyAttribute

Unity では、配列や List をシリアライズ可能な形で定義すると、インスペクタ上で配列の要素を追加したり削除したりできるようになって便利です。 Unity2021 あたりからは、自動的に ReorderableList になったので並び替えも簡単になり、さらに便利になりま…

【Unity】エディタのデバッグモードを常に有効にする

問題点 Unity で作業をしていると、当然ですが、デバッグ作業が必要になってくると思います。 VisualStudio や Riderなどの IDE でデバッガーを起動して、ブレイクポイントを仕込んだりして挙動を見ると思います。Unity2020 か 2021 あたりから、エディタ上…

【Unity】シーンの変更の破棄をスクリプトから実行する

Unity で変更のあったシーンファイルは、シーン名の横にアスタリスクがついて、変更があることを教えてくれます。 この時、右クリックで出るメニューの「Discard Changes」を実行することで、保存されていない変更をすべて破棄することができます。 スクリプ…

【Unity】特定のシーンなど、保存させるアセットを限定する

Unity で作業をしているとき、基本的には Ctrl+S で作業内容を保存するかと思います。 これは編集中のアセットから今開いているシーンまですべて保存します。 これだと困ることがたまにあって、例えば特定の ScriptableObject を編集していて保存したとき、…

【Unity】Timelineのヘッドを手動で動かしたときだけ処理を仕込む【Timeline】

やりたいこと Timeline の現在時間は PlayableDirector.time で取得することができます。 が、この値が普通に Timeline を再生して動いたのか、それとも手動で Timeline のヘッドを動かしたから動いたのかを区別することはできません。 (あるかもしれないけ…

【Unity】シェーダに関する走り書きメモ

個人的な走り書きです。まとめる気力があればちゃんとまとめます。 ShaderGUI を継承すればシェーダの Inspector を拡張できて、結構自由に値が設定できる Standard Shader のにある Mode は シェーダ に _Mode という Property が存在して、シェーダでは使…

質問サイトをコピペして機械翻訳しただけのサイトを検索から除外する

最近プログラミング関連の言葉を日本語で検索すると、おそらく英語の質問サイトにあるものを丸々コピペして機械翻訳しただけのようなサイトがトップに出てくることが出てきました。 こんな感じです。 何と一番最初のページ以外はすべてそれに該当します。 特…

【Unity】Inspector のプロパティを日本語で表示する

デザイナーやプランナーが Unity を触るとき、英語に不慣れなことが多く、日本語にできないかという要望がありました。 新しく PropertyAttribute、PropertyDrawer を実装することで、以下のようにすることができます。 public class Example : MonoBehaviou…

【Unity】特定のフォルダ以下にある特定の Object をリストで取得する

久しぶりの更新です。 よく書く割に地味に書き方を忘れるので、自分用のメモ代わりに書きます。 System.IO を使えば結構簡単にできます。 directoryPath 以下にある T型を持ったアセットをすべて取得してきます。 IReadOnlyList<T> FindAllAsset<T>(string directo</t></t>…

【VSCode】おすすめ拡張一覧

お久しぶりです。更新しなさすぎて広告が出るようになってしまったので久しぶりに更新します。 VSCodeのおすすめ拡張をズラリと列挙します。 これは絶対入れるべき!というのばかりなのでぜひ試してみてください。 おすすめ順で列挙します。 多分誰にでもお…

【Unity】ImageEffectを使わずにポストプロセス処理をする

始めに ImageEffectを使うと、オリジナルのポストプロセスを書けるのはUnityの機能として以前からありました。私もポストプロセスでステンシルバッファを使った描画処理をやっていたのですが、Unity2017.3にアップデートした途端に挙動がおかしくなってしま…

【Unity】Redoのショートカットを変えた~い【Windows】

※これはWindowsのUnityだけの話です。 事始め UnityのショートカットはUndoがCtrl+Z、RedoがCtrl+Yになっています。この2つは昔からショートカットで定番となっており、ほとんどのソフトウェアで使えるものだということは、皆さんご存知のとおりです。しかし…

【Unity】リッチテキストを使うためのstring型の拡張メソッドを書きました

Unityで表示される文字(ConsoleログやuGUIのテキストなど)はリッチテキストに対応しています。 タグを付けると、色を変えたりサイズを変えたり出来るんですね。ちなみに対応してるのは色・サイズ変更、ボールド、イタリックの4種類みたいです。 いちいちタグ…

【Unity】トランジションするシェーダを作りました

テクスチャ一枚を差し替えるだけでトランジションの仕方を変えられるシェーダを作りました。 動画は汚いですがきれいにでてます。本当です。 何かいいGIFレコーダーないですか...とそれは置いておいて、使い方を。uGUIのImageに適用するシェーダとして作って…

VSCodeがGitを認識しなくなったら

ある日VSCode(1.20)がGitを認識しなくなりました。 ソース管理タブに行っても「有効なソース管理プロバイダーがありません」と表示され何もできなくなります。 (言語が英語だと"There is no active source control providers."と表示される)色々調べると以下…

VisualStudioのビルド時間を簡単に早くする

※この記事は2015年にQiitaで執筆したものです。情報が古い可能性があります。 目的 プログラマにとって一番時間の無駄になっているであろう「ビルド時間」を短縮できないかと考えていました。 調べていると、簡単に短縮出来る方法があったので紹介します。 …

VisualStudioのディレクトリパス設定を少しだけ楽にする

※この記事は2015年にQiitaで執筆したものです。情報が古い可能性があります。VisualStudioを使ってプログラミングしていると、プロジェクトのプロパティからインクルードやライブラリのディレクトリパスを設定することがあると思います。その設定を少しだけ…

【Blender】頂点カラーのAチャンネルを編集・出力できるようにする【v2.77】

※追記 タイトルが誤解を与えてる気がしたので変更しました。ふと暇だったのでギルティギアXrdのグラフィック記事を読んでいました。もうだいぶ前の記事ですね。 www.4gamer.net当時読んだときよりもちゃんと理解出来たので、できそうなところはやってみよう…

UnityがCドライブを圧迫する!!

自分のPCの記憶領域は128GBのSSDをCドライブ、2TBのHDDをDドライブという構成になっています。ほとんどのアプリをHDDに入れて、絶対速度がほしいのだけSSDに入れるという運用ですね。が、特に新しいアプリを入れたわけでもないのにCドライブの容量が残り10GB…

【Unity】ビットマップフォントをUnityで扱う その2【ShoeBox】

前回の続きです。ブログの更新頻度が爆上がりしてます(前年比) 7081.hatenablog.comここからはUnity上での作業...といいたいんですが、実は吐き出したxmlファイルをそのまま使おうとするとエラーが出ます。 ので、先にxmlファイルを編集します。 <font> <info face="D:\Desktop umberfont-export" size="35" /> <common lineHeight="35" scaleW="137" scaleH="141" pages="1" /> <pages> </pages></common></info></font>

【Unity】ビットマップフォントをUnityで扱う その1【ShoeBox】

今回は長くなったので2回に分けます。 UnityでUIのテキストを表示するときは、uGUIのTextを使うと思います。 (TextMeshProのTextもありますが、オリジナルのビットマップフォントを扱う方法が見つからなかったので割愛)しかしフォントを使って文字を描画…