最近プログラミング関連の言葉を日本語で検索すると、おそらく英語の質問サイトにあるものを丸々コピペして機械翻訳しただけのようなサイトがトップに出てくることが出てきました。
こんな感じです。
何と一番最初のページ以外はすべてそれに該当します。
特に StackOverrun というのをよく見る印象です。
検索する上で邪魔でしかない存在です。
最近プログラミング関連の言葉を日本語で検索すると、おそらく英語の質問サイトにあるものを丸々コピペして機械翻訳しただけのようなサイトがトップに出てくることが出てきました。
こんな感じです。
何と一番最初のページ以外はすべてそれに該当します。
特に StackOverrun というのをよく見る印象です。
検索する上で邪魔でしかない存在です。
デザイナーやプランナーが Unity を触るとき、英語に不慣れなことが多く、日本語にできないかという要望がありました。
新しく PropertyAttribute、PropertyDrawer を実装することで、以下のようにすることができます。
public class Example : MonoBehaviour { [SerializeField, Label("数字を入れてね")] int value = default; }
LabelAttribute の中身は以下になります。
Editor フォルダに入れる必要はないです。
久しぶりの更新です。
よく書く割に地味に書き方を忘れるので、自分用のメモ代わりに書きます。
System.IO を使えば結構簡単にできます。
directoryPath 以下にある T型を持ったアセットをすべて取得してきます。
IReadOnlyList<T> FindAllAsset<T>(string directoryPath) where T : UnityEngine.Object { List<T> assets = new List<T>(); var fileNames = Directory.GetFiles(directoryPath, "*", SearchOption.AllDirectories); foreach (var fileName in fileNames) { var asset = AssetDatabase.LoadAssetAtPath<T>(fileName); if (asset != null) { assets.Add(asset); } } return assets; }
※LoadAllAssetsAtPath() は使っていないので、ネストになってるアセットまでは取得できません。
お久しぶりです。更新しなさすぎて広告が出るようになってしまったので久しぶりに更新します。
VSCodeのおすすめ拡張をズラリと列挙します。
これは絶対入れるべき!というのばかりなのでぜひ試してみてください。
おすすめ順で列挙します。
神。待ってた。Ctrl+;でその行の最後にセミコロンを打つor削除してくれるだけの拡張。
地味だけど一番使用頻度は高い。
最強。マウスをあまり使わずにいろんな場所に飛べる。
キーボードから手を離す時間を極力なくすことで作業速度を上げるのです。
クリップボードの拡張。Ctrl+Shift+Vで昔のコピー履歴を辿れる。
コピペのショートカットはよく押し間違えるので重宝する。
不要な箇所にあるスペースやタブをハイライトしてくれる上に、削除もしてくれる。
"trailing-spaces.trimOnSave": trueにすると保存時に削除してくれるので必要ならどうぞ。
Git用拡張。誰がいつこの行を変更したかをいつでも見れる。他にもGit関連の機能がいろいろあるみたい?
ローカルで履歴を管理してくれる。
バージョン管理使ってても極稀にやらかしてしまった時の最終手段に。
// TODO とコメントしておけば、フッターにTodoをタスク表示してくれる
C#使うなら必要かなと。
コメントのスラッシュを3回打つと<summary>が打てるようになる。
Unity使うなら必要かなと。
UnityのShader用拡張。確かシンタックスハイライトとインテリセンスに対応する拡張。
拡張じゃないけど毎回インストールする度にいじってる設定を書いておく。
reference数の表示設定。うざいので消してる。
コード折りたたみの表示設定。デフォルトはマウスオーバーで表示になってる。
起動時に.NET CLIがどうたらって言ってくるの無視
拡張独自の設定もあるので、ちょっと変えたいなとか思った時は拡張のリファレンスを見るべし。
セミコロンが必要な言語だったらTrailing Semicolonは入れるべき。入れて。
ImageEffectを使うと、オリジナルのポストプロセスを書けるのはUnityの機能として以前からありました。私もポストプロセスでステンシルバッファを使った描画処理をやっていたのですが、Unity2017.3にアップデートした途端に挙動がおかしくなってしまったのです...。
色々と調べてみた結果、ImageEffectを使わずにポストプロセスをする方法を思い付いたので記事にします。
ちなみに、ステンシルバッファをImageEffectでは使えないのかというと、そんなことはないです。Unity2017上でもちゃんと動く方法はありますが、今回の本筋からは外れるので、別記事にします。そのうち書こうと思うで、少々お待ちください。
では、ImageEffectを使わずにどうやってポストプロセスをするのか、書いていきます。
結論を言葉だけで説明すると、
になります。具体的に説明します。
・用意するもの
ポストプロセスで使うシェーダ
uGUIのImage
以上になります。
まず、uGUIのImageをシーン内に置いてください。これ用のCanvasの設定が必要なので、新規Canvasの子で作ったほうがいいかもです。
で、Canvasの設定を以下のようにしてください。
RenderCameraはポストプロセスをかけたいカメラです。
PlaneDistanceは他のオブジェクトより絶対前になればどこでもいいですが、カメラのnearプレーンのすぐ近くにしておけば安心だと思います。今回はMainCameraのnearと同じ数値にしています。
これでカメラがImageを一番前面にして描画するようになります。
また、Imageはカメラを覆うようにWidth,Heightともにstreachにし、Materialにポストプロセス用の奴を適用します。
次にシェーダの方です。この記事を見ている皆さんには、恐らくImageEffectで適用していたシェーダがすでにあると思います。それを少し編集するだけでいいです。
編集するのは2箇所になります。
RenderQueueは大きいほど後に描画されます。とにかくでかくすることで、他の全ての描画が終わった後に描画を走らせます。
そしてGrabPassにより、_GrabTextureに描画後の結果が入ってきます。なので、_GrabTextureをシェーダでいじってやれば、ポストプロセスで処理することができる。というわけです。
一応ものすごくシンプルなシェーダを、ImageEffectと今回のパターンの両方載せておきます。
色を反転するポストプロセスシェーダです。変化している場所を見比べてください。
この方法だとImageEffectに比べて、カメラのMSAAをONにしててもステンシルバッファを取得出来るというメリットがあります。ただ、Unityが推奨しているポストプロセスのやり方ではないので、なにか予期せぬことが起きるかもしれません。実機等でちゃんとテストしてみてください。
なんかわからんけどImageEffectうまく動かねえって人は今回の方法を試してみてはいかがでしょうか。
※これはWindowsのUnityだけの話です。
UnityのショートカットはUndoがCtrl+Z、RedoがCtrl+Yになっています。この2つは昔からショートカットで定番となっており、ほとんどのソフトウェアで使えるものだということは、皆さんご存知のとおりです。
しかし、ここ数年のWindowsのソフトでは、Ctrl+Shift+ZでもRedoが出来るものが増えてきています。これはCtrl+Yよりも指を動かす量が少ないのでとても快適です。私の場合、一度慣れるとCtrl+YでRedoをすることはほとんどなくなりました。
Ctrl+Shift+Zに対応していないソフトはその瞬間に使う気力をなくします。手を大きく広げてYに指を伸ばす事の醜さったら目も当てられないですね。
恐ろしいことにUnityはCtrl+Shift+Zに「未だに」対応していません。これはWindowsユーザにだけ与えられた特別な足枷です。ショートカットキーを変更することすら許されていません。Unity Technologiesは一体何を考えているのでしょうか?
...前口上が長くなりました。Unity最高!
Unityで表示される文字(ConsoleログやuGUIのテキストなど)はリッチテキストに対応しています。
タグを付けると、色を変えたりサイズを変えたり出来るんですね。
ちなみに対応してるのは色・サイズ変更、ボールド、イタリックの4種類みたいです。
いちいちタグを着けるのは面倒くさいので、拡張メソッドを書きました。
100%車輪の再発明だけど気にしない。