iPhoneXの開発時にあると便利そうなフレーム画像。
探しても全然見つからないのでPhotoshopでサクッと作ってみました。
汎用性が高そうなので公開します。
たて (Portrait)
1125 x 2436 ピクセル
よこ (Landscape)
2436 x 1125 ピクセル
私はMSペイントを使ってスクリーンショットの切り抜きをよくやるのですが、大量のMSペイントを起動してしまうことがよくあります。
MSペイントを大量に起動してしまった場合、これらをマウス操作で消していくのはなかなか大変です。
今回の記事では複数のMSペイントをコマンド一発で全部まとめて消す方法を紹介します。
MSペイントですが、閉じようとすると保存確認ダイアログが表示されてしまいます。
MSペイントを1,2個起動しているだけならまだいいですが、10、20個も起動してしまった場合は厄介です。
「保存しない」を10回も20回もクリックしないと全てのMSペイントを閉じられない。 面倒くさい。
「保存なんてしなくていいから全部まとめて消したい!」
という場合はtaskkillコマンドを使うと複数のMSペイントを一気に消すことができます。
「ファイル名を指定して実行」ウィンドウに cmd と入力するとコマンドプロンプトが起動できます。
Win + X を押した後 R を押すと「ファイル名を指定して実行」ウィンドウを手早く起動できます。
以下のコマンドを実行すると実行中のすべてのMSペイントを強制終了します。
taskkill /im mspaint.exe /f
Unityでゲームを作るとき、どのようなフォルダ構成でアセットを管理するか悩みどころです。
フォルダ構成が悪いと開発効率が落ちてしまいます。
「アセットはどのようなフォルダ構成にすれば良いのだろうか?」 という問に関して考えられるフォルダ構成をいくつかご紹介したいと思います。
以下を基本的な方針とします。
・アセットストアからインポートするアセットはAssets直下に配置
・開発中のゲームで使用しているアセットはProjectフォルダの中に配置
シーン、スクリプト、テクスチャなどのアセットはProjectフォルダ以下に入れることになりますが、
ここで問題となるのが、これらのアセット群をどのようなフォルダ構成にするかです。
・・・ むずかしい
悩みに悩んだ結果、これがよさそうだなぁという結論にたどり着きました。
そこで、考えられるフォルダ構成を3つ、今回は紹介したいと思います。
・方法1 : アセット単位でフォルダを作る
・方法2 : シーン単位でフォルダを作る
・方法3 : 音素材、デザイン素材、プログラム素材という区分でフォルダを作る
アセットの種類ごとにフォルダを作ろうという思想です。
文章で説明すると、
・シーンはSceneフォルダの中に配置
・シーンで使用するスクリプトは Scriptsフォルダの中へ配置
という管理方法です。
アセット群を種類で分けることのメリットは、アセットがどこにあるかが分かりやすくなるという点にあると思います。
さらに、その中でシーン別に分けることによりそのアセットがどのシーンで使われているのかも分かりやすくなります。
例えば、SceneAで使用されているテクスチャを差し替えたい場合はAssets/Project/Textures/SceneA の中だけを触れば良いので 分かりやすい。
この方法ですが管理が面倒くさいというデメリットがあります。
例えば、新しくシーンを作成しようとした場合などに手間がかかります。
Assets/Project/の中にScenes/, Scripts/, Textures/フォルダが存在する場合を考えます。
Hogeシーンを作る場合以下の作業が必要になります。
同じ名前のフォルダを複数作成する必要が出てきてしまい、これは若干面倒です。
このHogeシーンですが、名前を変えてFugaシーンに変えようとした場合にも手間がかかります。
複数あるHogeフォルダを一つ一つFugaへとリネームするという作業が必要になります。
これも面倒くさい。
二つ目の方法は、
「アセット群をシーン単位でまとめてしまおう」
という考え方です。
シーン単位でまとめることにより、シーンと同名のフォルダを作る作業が要らなくなります。
細かい補足をすると、
・シーンアセットは Assets/Project/[シーン名]/ の中に入れる
・シーンで使用するスクリプトは Assets/Project/[シーン名]/Scripts/ の中に入れる
・シーンで使用するテクスチャは Assets/Project/[シーン名]/Textures/ の中に入れる
全てのシーンで使用するスクリプトをまとめたい場合は、
Assets/Project/_Common/Scripts/というフォルダを作りその中に入れます。
方法1.のデメリットとして、「シーンに対応する同名フォルダが複数必要になる」というものがありましたが、
方法2.ではシーンに対応するフォルダは1つだけで済みます。
同じ名前のフォルダを何個も作る、という面倒くさい作業はしなくて済みます。 楽です。
この方法でアセット管理をする場合、シーンデータとシーン内で使用されているデータ群が近い場所に配置されます。
関連の強いアセット群が近い場所に配置されることにより管理がしやすいというメリットがあります。
例えば、Hogeシーンで使用しているスクリプトを編集する場合はシーンファイルの近くにあるScripts/フォルダ以下を見れば良いので
管理が楽です。
例えば、SceneAで使用されているテクスチャを差し替えたい場合はAssets/Project/SceneA/Textures の中だけを触れば良いので 分かりやすい。
・同系統のファイルが 分散 してしまう。
例えば、Gameシーンで使用しているテクスチャはAssets/Project/Game/Texturesフォルダの中。 Titleシーンで使用しているテクスチャは Assets/Project/Title/Texturesフォルダの中。といった感じで ファイルが離れたところに置かれてしまいます。
テクスチャの差し替えをしたいとなった場合、これはちょっと手間が多いです。
以下のようなフォルダ構成にします。
pngや3DモデルやFontなどのファイルはすべてデザイン素材というくくりにして
Assets/Project/Design/ 以下にそのまま入れます。
Design/以下はどのようなフォルダ構成になっていてもOKです。シーン構成と対応付ける必要はありません。
mp3,wavファイルなどの音声ファイルはオーディオ素材というくくりにして
Assets/Project/Audio/ 以下に入れます。
これも好きな適当なフォルダ構成でも大丈夫です。シーン構成を意識する必要は皆無です。
スクリプト、シェーダー、Prefab、Scene、ScriptableObjectなどは プログラム素材 というくくりにして
Assets/Project/Program/[シーン名]/ 以下に入れます。
Program以下ではシーン構成を意識したフォルダ構成にします。
例えばGameシーンは Assets/Project/Program/Game/Game.unity としてシーンアセット(.unity)を配置します。
Gameシーンで使用するスクリプトは Assets/Project/Program/Game/Scripts/ の中へ入れます。
Prefabは内部的には画像ファイルや音声データといったリソースの参照を持っているだけです。
つまり、スクリプトやScriptableObjectと似たようなもので、「Prefabもプログラム素材である」というとらえ方をして問題ないのではないかと個人的に考えています。
mp3やwav = オーディオ素材
pngやfbx = デザイン素材
それ以外 = プログラム素材
という分け方をしても困らない、というのが自分の考えです。
方法3.は素材が差し替えやすい、というメリットがあります。
デザイン素材はDesignフォルダにまとめてあるので、差し替える場合はこの中だけ触れば良い。
サウンド系素材を差し替えたい場合はAudioフォルダ。
方法2.のデメリットとして挙がっていた「同系統の素材が離れた位置に置かれてしまう」ですが、
方法3ではこれを解消しています。
むしろ、方法3は方法1と方法2のいいとこ取り、といった感じでしょうか。
プログラム系のアセットは方法2をそのまま採用しつつ、音やデザイン素材はそれとは別に一か所にまとめてしまう。
私は方法3が好きです。
方法3のデメリットとしては「シーンとデザイン素材の関連が分かりにくい」というのが考えられます。
方法2ではシーンデータと素材は近い場所に配置されていたため、関連が分かりやすいという利点がありました。
一方、方法3の場合はシーンデータと素材が離れた場所に配置されてしまうので、方法2と比べてシーンと素材との間の関連が分かりにくいというデメリットがあります。
素材の数が増えてきた場合は シーンと同名フォルダを作り、その中に素材をまとめるという形がやりやすいと思います。
これまでに3つのフォルダ構成を紹介しましたが、どれも一長一短という印象です。
ゲームに応じて最適なフォルダ構成というのは変わるのではないかと思いました。
自分は方法3.が好きです。
Microsoft To-Do というアプリをご存知でしょうか?
Microsoft社がリリースしているTodo管理アプリです。
このアプリ、とても使い心地が良くて自分は毎日使っています。
今回の記事では、Microsoft To-Doを使っていて便利だなと思ったポイントを紹介したいと思います。
ちなみに、Microsoft To-Doの対応プラットフォームはWindows/iOS/Androidなど。
・タスクがアカウントと紐づく
・「今日の予定」機能
・タスクの追加/削除が快適(iOS)
・今日の予定の管理が快適(iOS)
・タスクのカテゴリー分け機能も充実
・タスクのレビュー機能
Micorosoft To-Doで入力したタスクはMicosoftアカウントと紐づき、クラウド上で管理されます。
例えば以下のような使い方ができます。
自宅のWindowsマシンでタスクを入力して、外出先ではiPhoneを使ってタスクを見る。
外出先でiPhoneでタスクを入力して、自宅のWindowsマシンで見る。
これは便利です。
デバイスや場所に縛られないところがイイですね。
快適です。
WindowsマシンやiPhoneが仮にぶっ壊れたとしても、入力したタスクは消えません。
安心です。
タスクがアカウントに紐づいているおかげで場所に応じたタスク管理をする、といったこともできます。
プライベートなタスクはプライベートなMicorosoftアカウント管理でタスク管理。
仕事のタスクは仕事用MicrosoftアカウントでTodo管理。
このように目的に応じてアカウントを使い分けることで、場所に応じたタスク管理をすることができます。
続いてご紹介したいのが、「今日の予定」機能です。
「今日の予定」機能を使うと無数にあるタスクの中から必要なものだけを
リストアップすることができます。
効率の良いタスク管理が可能となります。
Todoアプリを使っているとついやってしまうのが、
「あれもやろうこれもやろう」
と思ってタスクを 追加しすぎてしまう事。
これをやっているとタスクの数が増えすぎて
「今日はどのタスクをやるの?」
というのがだんだん見えなくなってきてしまいます。
ちなみに、自分のTodoリストにはタスクが100個以上あります。
「どれから手を付ければいいの? もう、わけがわからないよ・・・」
こんな場合に役に立つのが 「今日の予定」 機能です。
過去に入力した大量のタスクを見返しながら、
「今日はこのタスクをやるか」
追加したタスクは「今日の予定」リストから見ることができます。
これにより、今すぐやりたいタスクだけを「今日の予定」として洗い出すことができ、
今日は何をするかの計画を立てやすくなります。
これは便利です。
Todoリストには
「タスクの数が増えると見返すコストも増える」
「タスクの数を制限するとメモしきれない」
といった問題がありますが、
Microsoft To-Doの「今日の予定」機能はこれらの問題を一手に解決しています。
これぞ 「アイデア」 というやつですね。スゴイです。
アプリを起動すると最初に現れるのが、タスクの入力欄とタスクの一覧です。
入力画面が最初に出てくるおかげで、アプリを起動してすぐにタスク入力に移ることができます。
これは快適です。
よくあるTodoアプリでは、アプリを起動してからタスク入力までになんらかの操作が必要だったりしますが、
Microsoft To-Doの場合はアプリを起動してすぐに入力に移ることができます。
これが素晴らしい。
Todoアプリは繰り返し使う道具です。
たった1回の余分な操作も、積もり積もれば数千回・数万回の操作になってしまいます。
面倒くさい。
人はストレスがたまる道具は使いたくないものです。
アプリ起動からすぐに入力に移れるというのはストレスが少なく、素晴らしいことだと思います。
タスクを右へドラッグすることで今日の予定への追加や今日の予定からの削除ができます。
タスクを触りながら、指を右へ少し動かすだけ。 とても快適です。
左へドラッグするとタスクそのものを削除されます。
快適です。
Micorosoft To-Doには3種類のリストが用意されています。
タスクは追加先は考えず、忘れないうちにリストに追加しておきます。
追加先は「今日の予定」か「To-Do」リストです。
リストの中身が増えてきたら自作リストに追加し、カテゴリー分けします。
今日の予定には追加したものの消化しきれずに放置されてしまったタスクがあったとします。
Micorosoft To-Doはなんとそのタスクをリストアップしてくれます。
タスクの消化忘れもこれで防げそうです。
消化しきれなかったタスクだけでなく、過去に追加したタスクをピックアップして表示してくれたりもします。
「そういえばこのタスクがあったなぁ」とか思い出すことも。
レビュー機能便利です。
筆者はAndroid端末を持っていないので、AndroidアプリのMicrosoft To-Doをまだ試すことができていません。
しかし Microsoft To-Doが素晴らしいアプリであることには変わりはないでしょう。
Hierarchy Pro というアセットがかなり便利だったので紹介したいと思います。
ヒエラルキーを高機能にするエディター拡張です。
さまざまな機能が含まれており、拡張性も高いです。
お値段たったの6ドル。 安い! (2017年12月15日時点)
このHierachy Proを使っていて便利だと思った機能をいくつかピックアップして簡単に紹介したいと思います。
ヒエラルキー上の表示物は矢印で示した部分からON/OFFを切り替えることができます。
オブジェクトにアタッチされているコンポーネントをアイコン表示してくれる機能。
コレさえあればコンポーネントがどこにあるかが一目瞭然。
コンポーネントを探す手間が省けます。
個人的には最も便利な機能だと思っています。
コンポーネントのアイコンをクリックするとメニューが表示されます。
このメニュー上からコンポーネントのコピーやペースト、削除などが行えます。 便利です。
選択しているオブジェクトの中から特定のコンポーネントで絞り込む機能。
「こんな機能役に立つの?」という疑問が出てきそうですが、特定のコンポーネントを持つオブジェクトだけを編集したい時に本領を発揮します。
Imageコンポーネント付きのオブジェクトだけを一括選択したい場合を考えます。
通常なら検索ボックスに「t:Image」を入力して、ヒエラルキーのオブジェクトをクリックして Ctrl + A 、
といった感じの面倒くさい作業をやることになりますが、
Hierarchy Proのフィルター機能を使えばそんな面倒くさい検索テキスト入力作業は必要ありません。
オブジェクトを複数選択した後に「Filter Selection By "Image"」をクリックするだけでImageだけ選択できます。
フィンガーポイントが節約できて快適です。
オブジェクトがどのオブジェクトへの参照を持っているかをノードグラフ形式で表示してくれる機能です。
例えば、ScrollViewオブジェクトを選択した場合
以下のようなノードグラフを表示してくれます。
間違えて別のオブジェクトをアタッチしていないか、などをさっと確認する場合などいろいろと使えそうです。
これは面白い。
ヒエラルキーの下のほうにある赤い丸アイコンをクリックするとノードグラフが表示されます。
キーボードの 「Shift + Alt + G」同時押しでも出せます。
アイコンをぽちっとクリックするだけでPrefabをApplyすることができます。
「インスペクター上でApply押せば済むんじゃないの?」という疑問が出てきそうですが、
シーンに大量のPrefabが存在する場合に本領を発揮します。
Prefabの変更をApplyしたい場合、通常なら
「オブジェクトをクリック、インスペクター上のApplyをクリック」
という2回のマウスクリック操作が必要です。
シーンに複数のPrefabが置いてあって変更をApplyしたい場合は
オブジェクトをクリックしてApplyボタンをクリック。
また別のオブジェクトをクリックしてApplyボタンをクリック。
この作業、地味に面倒くさいです。
しかし、HierarchyProのPrefabボタンモジュールならボタンを1回クリックするだけでApplyが完了するので快適です。
シーンにおいてあるPrefabの数が少ないときはメリットが少ないかもしれません。
「ヒエラルキー上にこういうGUI欲しいんだけど無いの?」というときに便利なのがカスタムモジュールです。
なんと、GUIを自作できます。
例えば、ImageのraycastTargetをON/OFFするGUIを自作する、といったことができます。
HierarchyProにはカスタムモジュールのサンプルが付いてきます。
具体的にはCustomModule_Example.csの中にカスタムモジュールのサンプルコードが記述されています。
スクリプトの頭にはカスタムモジュールのテンプレートが用意されており、
これをいじるだけでお好みのカスタムモジュールが作れます。
以下のソースコードはuGUIのGraphicのraycastTargetをON/OFFするカスタムモジュールです。
ちなみにuGUIのImageクラスやTextクラスはGraphicクラスを継承しています。
class RaycastTargeetModule : HierarchyExtensions.CustomModule_Slot3 { public override string NameOfModule { get { return "RaycastTargeet"; } } public override void Draw(Rect drawRect, GameObject o) { var graphic = o.GetComponent<Graphic>(); if (graphic == null) { return; } graphic.raycastTarget = EditorGUI.Toggle(drawRect, graphic.raycastTarget); // raycastTargetをON/OFFするToggleの表示 } public override string ToString(GameObject o) { return null; } }
ヒエラルキー上のこのアイコンをクリック。
出てくるメニュー中からカスタムモジュールを選択します。
カスタムモジュールがヒエラルキー上に表示されます。
他にも以下のような使い方が考えられます。
・インスペクター上のオブジェクトアタッチがMissingになっているコンポーネントを警告表示
・座標や回転をリセットするボタンを出す
・Prefabを生成するボタン
いろいろ応用が利きそうです。
自分自身も、ヒエラルキー上に情報を表示させるエディター拡張を作っていましたが、こっちのほうが便利ですね。
拡張性も高い。
こんな素晴らしいツールがたったの6ドルで手に入るなんて作者さん太っ腹です。
ちなみに、私はブラックフライデーセールで5ドルで購入しました。 なんだか申し訳ないですね。
カスタムモジュールを書くにはエディター拡張の知識が多少なりとも必要になると思います。
エディター拡張を勉強するには以下の電子書籍がおすすめです。
Universeという無料アセットを触ってみたので軽く紹介します。
・シングルトンを簡単に作れる。
・シングルトンはPrefabとして保存され、ゲーム再生時に自動でInstantiateされる。
・シングルトンはどのシーンから呼んでも大丈夫
シーンの適当なGameObjectにUniverseコンポーネントをアタッチします。
これで準備完了です。
HogeManagerクラスを作ってみます。
using Universe; public class HogeManager : Manager<HogeManager> { public int X; }
マウス左クリックでHogeManagerのXの値をログ出力
using UnityEngine; public class HogeBehaviour : MonoBehaviour { void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log(HogeManager.Instance.X); } } }
今回はアセットをブックマーク管理できるエディター拡張 "AssetBookmarker"を紹介します。
アセットをブックマークへ登録できるエディター拡張です。
これがあれば、 「あのアセットどこだっけ?」というトラブルが避けられます。
シンプルですが便利です。
ブックマークへ追加したいアセットを右クリックして"Add to bookmark list"を選択します。
アセットがブックマークに登録されます。
AssetBookmarkerを作った後、ヒエラルキーのオブジェクトもブックマーク管理したいという欲が出てきました。
そこで作ったものがヒエラルキー用のブックマークウィンドウです。
Applyボタンを押すとブックマークした名前が検索ボックスに反映されます。
深いところにあるオブジェクトも、これを使えば一発で引っかかります。
シンプルですが便利です。
ブックマークに登録したいオブジェクトを右クリックして、"Add to bookmark list"をクリックします。
ブックマークに追加されます。
"Tools/Asset Bookmarker"からブックマークウィンドウを開くことができます、