UnityEditor拡張 指定した拡張子のAssetを削除する
using UnityEngine; using UnityEditor; using System.IO; using System.Collections; using System.Collections.Generic; //UnityEditor上でWindowを表示するためEditorWindowクラスを継承します。 public class DeleteResource : EditorWindow { public static List<string>log; [MenuItem("Assets/Delete Resource Asset")] //EditorでDelete Resource Assetを選択するとProcess()が呼ばれます。 static void Process(){ log = new List<string> ();
//削除したい拡張子を指定します。 string[] searchTarget = {".prefab", ".cs"}; EditorWindow.GetWindow<DeleteResource>();
//削除したいフォルダまでのパスを指定します。 string folderPath = Application.dataPath + "/Resources/DeleteAsset";
//フォルダがあるか確認します。 if(!Directory.Exists(folderPath)){
log.Add("folder is missing"); return; }
//フォルダにあるファイルを一括で取得します。 string[] files = Directory.GetFiles (folderPath); foreach(string filePath in files){ foreach(string search in searchTarget){ if(search.Equals(System.IO.Path.GetExtension(filePath))){ File.SetAttributes (filePath, FileAttributes.Normal); File.Delete (filePath);
//Assetの変更を適応する。
AssetDatabase.Refresh();
//削除したファイルをWindowに表示するためListに追加します。 log.Add(filePath); } } } } void OnGUI(){ if(log != null){ if(log.Count != 0){ foreach(string l in log){
//Windowに文字を表示します。 EditorGUILayout.LabelField (l); } } } } }
そして、DeleteAssetフォルダに今回は.prefabと.csを削除するため、削除するAssetを作成しましょう。
そして、早速削除しちゃいましょう。UnityEditorのメニューバーのAssetsの配下にDelete Resource Assetが現れていると思います。
クリックしましょう。
新たにWindowが出てきましたか?
削除したAssetのPathが表示されて、Assetがきちんと消えましたか?消えたら成功です。
以上がUnityEditor拡張で指定した拡張子のAssetを削除する方法です。
UnityEditor拡張は何かと便利に使える可能性を感じれたので、今後も触っていこうと思います。
gitコマンド備忘録
先日、研究室の後輩たちにgitの初心者講座をしたときのコマンド等を書き残しておこうかと…
また、今回はgitの説明は省きます。コマンドの備忘録なので、gitについて知りたい方は
Gitを使ったバージョン管理【Gitの基本】 | サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
または
を参照してください。
今回、gitのクライアントとしては
MacOS → ターミナル
を想定しています。
まず、bashの必要最低限のコマンドから書き残します。< >での記述がありますが必要に応じて変更してください。
例 : cd <フォルダ名> → cd Desktop = デスクトップへ移動
-フォルダ名の場所へ移動
cd <フォルダ名>
-現在自分がいる階層の一覧を見る(ファイルやフォルダの確認ができます)
ls
-現在の階層のパス
pwd
-フォルダを作る
mkdir <フォルダ名>
-ファイルを作成
touch <ファイル名>
以上のコマンドを覚えると、コマンドでの操作がしやすくなります。
さて、本題のgitです。
-現在の階層にリポジトリを作成
git init
-インデックスに<ファイル名>追加
git add <ファイル名>
-インデックスに全てのファイルを追加
-リポジトリに記録する
git commit
-コメントをつけてリポジトリに追加する
git commit -m "<コメント>"
-切り替え操作
git checkout <切り替え先>
-ブランチを切り替える
git checkout <ブランチ名>
-コミットを切り替える
git checkout <コミットの識別番号>
-現在の階層のリポジトリの状態を得る 変更したファイル等がわかる
git status
- ブランチのログが見れる
git log
-多少グラフィカルにログが見れる
git log --graph
-自分が行ったgitの操作のログ
git reflog
-ローカルブランチの一覧を取得
git branch
-リモートブランチを含めた一覧を取得
git branch -a
-ブランチの結合を行う
git merge
-リモートのリポジトリを設定
git remote add <name> <url>
-リモートのリポジトリを設定し、リモートの内容をローカルにコピーする
git clone <url>
-リモートへローカルの内容を送信する
git push <remote name> <local branch>:<remote branch>
-リモートの内容をローカルに受信して、結合を行う
git pull <remote name> <local branch>:<remote name>
ざっと…以上です。何かあればツッコンでくれると嬉しいです。
InMobi × Unity Androidでバナー広告の表示をしてみる
今回は、UnityでInMobiの広告サービスの使い方を書きたいと思います。
ただ、自分がバナー表示しかしたことがないため情報としては少ないかもしれないです…また、今回はストアにアプリを出していない人向けに書きます。
ちなみに、Unityのバージョンは5.1.4で行っています。
まずはInMobiでアカウントの作成を行ってください。
InMobi | Mobile Discovery Commerce | Monetization | Advertising
アカウントは作りましたでしょうか?さてさて、設定を行っていきましょう。
上のタブ「MONETIZE」を選択します。すると左の方に"+"がありますか?クリックしてください。
自分は例として、架空のアプリの設定を行います。自身のアプリに沿った設定をお願いします。
では、作成するAppの設定ですね。項目は13あるため、どうかお付き合いください。
1. "Have an app that isn't yet published?"をクリックしてください。
2. 作成するアプリの名前を入力し、Platformを選択します。下のチェックボックスは13歳以下を対象にしているかを聞いています。全年齢対象ならば、チェックしておきましょう。
3. 今回はバナー広告の設定を行うため"BANNER"を選択します。
4. 広告の名前を決めましょう、今回は"Banner 1"としておきます。
5. "Select your development platform"でUnityを選択します。
My Appsのリストに先ほどの設定が加わったでしょうか?
…さて、続けましょう。
6. 加わったSampleというアプリ名をクリックします。
7. 設定したバナー名をクリックします。今回だと"Banner 1"ですね。また、アプリ名の下に"Property ID"とあります。後々使用するので、注意しておいてください。
8. PLACEMENTSという設定ページですね。ここで、重要なのが"Placement ID"です。後々使用するため、注意しておいてください。
9. InMobiのUnityパッケージをダウンロードしましょう。
リンクを開くと以下のような画面となります。
"ここ"という部分をクリックするとパッケージのダウンロードができます。
10. UnityEditorにInMobiのUnityパケージをImportをしましょう。
Import時には、このようなWindowが出てくると思います。そのまま、Importを押して続けましょう。
11. Importが終わると以下のようなProject構成になると思います。そして、Assets>Plugins>InMobiAndroid>demoのInMobiTestSceneを開きましょう。
Hierarchy内のInMobiAndroidManagerを選択します。
InMobiAndroidManagerのInspecterにある、In Mobi Android Manager (Script) を開きます。
12. ここからは、ソースコードを一部改変します。ちなみに、改変するのはAwakeメソッドのみです。以下のように改変してください。
void Awake() { // Set the GameObject name to the class name for easy access from Obj-C gameObject.name = this.GetType().ToString(); DontDestroyOnLoad( this ); var dict = new Dictionary<string, string>(); string name = "ban1"; //Property IDを引数に渡します。(string型) InMobiAndroid.init ("Property ID", dict); //Placement ID(long型), bannerの名前, bannerの位置, 横のサイズ, 縦のサイズ, インターバルの時間 を引数に渡します。 InMobiAndroid.createBanner (Placement ID, name, InMobiAdPosition.BottomCenter, 320, 50, 30, "test1,test2,test3", dict); //作成したbannerの名前を引数に渡します。 InMobiAndroid.loadBanner(name); }
PropertyIDは、項目の7を参照してください。
PlacementIDは、項目の8を参照してください。
上記の変更行ったら、しっかりと保存してUnityEditorに戻ってください。
13. Androidでのみ動作するためBuildするプラットフォームをAndroidに切り替えビルドしてください。Androidにビルドする環境は、ご自分で用意をお願いします。
実行すると以下のような画面になるかと思います。ビルドするとGUIボタンが並んでいると思いますが、無視してください。アプリを起動してから、一分程経つと自動的に画面下にバナーが現れます。
以上が、InMobiを使用してUnityでバナーを出現させる方法です。もし、出現しない場合はPropartyIDやPlacementIDを見直してみてください。
mixi gitchallenge 参加してました!
mixiさん主催のgitchallengeという、gitを使用した謎解きをするイベントに参加してました。実際の現場で起きた出来事などをモチーフに複数の問題があり制限時間のある中で二人一組のチームで解いて行き、どのチームが一番解けたのか競うものです。
残念ながら自分がいたチームは入賞には至りませんでした。完全に自分が足引っ張っちゃいました…gitに対する勉強不足を痛感しました。チームメイトには申し訳なかったと思っています。…やっぱり、技術と年齢は関係がないと改めて思いました。
ちなみに、GitHubさんと提携して開催していたそうで…
このようなスッテカーの配布もあっていました。
また、イベントの終わりには懇親会がありmixiさんからご飯も出ました。(ちなみにお昼ご飯も出していただきました。)
いやぁ、美味しかったです。そして、自分の知らない分野の人とも繋がれ、自分の未熟さも知れて満足でした。
そういえば…mixiさんがgitchallengeの問題を一部公開しています。参考にどうぞ
企画展GAME ONに行ってきました!!
2016年3月2日から行われている。企画展「GAME ON~ゲームってなんでおもしろい?~」に行ってきました!!
企画展「GAME ON~ゲームってなんでおもしろい?」公式ホームページ
とりあえず…面白かった!!最初にヒットしたゲームと言われるPONGから最新のゲームまでありとあらゆるゲームを体感できました。ちなみに大体の時系列順で9つのブースに分かれてました。
その一部を紹介していこうかと思います。
やっぱり、まずは…PONGです。
最初にヒットしたゲームと言われるPONG!コントローラーを捻るだけで、遊べるゲームです。ホッケーゲームなんですけど…ひとりで二つ捻るのは何とも…こう…もう一人いて欲しかったです…(このとき自分はぼっちで楽しんでました。)
MISSILE COMMAND!
右手のトラックボールと三つのボタンで遊ぶゲームですね。プレイヤーは上から降ってくる敵のミサイルを自分のミサイルで相殺していくゲームですね。最初のステージは簡単だけど段々と難しくなっていって…あまり生き残れなかったですね…
次に!MARBLE MADNESS!!
プレイヤーはトラックボールを操作して、画面のボールを転がしてゴールまで運ぶというものですね!最初は余裕でクリアしてたんですけど、途中で敵が出てきたりして苦戦して…あえなくゲームオーバーしました。二人プレイはしたかったです。
次は…AFTER BUNER!
体感型ゲームのひとつですね。戦闘機を操作するんですけど、コントローラーを右に傾ければ座っている椅子ごと右に傾いちゃうんですよ!!結構思いっきり傾いたので驚きはしたものの楽しめましたよ。
個人的に一番アーケードゲームで面白かったのが…ハングオンです!
バイクにまたがり画面の中のプレイヤーを操作してレースをするというゲームですね。前々から知っていて興味はあったもののプレイできないだろうと諦めていたので…めっちゃ嬉しかったです。思いっきりバイクを右に左に傾けてました。あ、レースには負けました…
さてさて、コンシューマーゲームを紹介していきますよ。
プレイヤーが左右に動き奥から迫ってくる敵を撃つというシンプルなゲームだったのですが…割とのめり込んでいきました。円状のステージだけでなく横に一直線だったりV字になったりと面白かったです。
誰もが知ってるであろう、ロックマン
いやはや、初めてプレイしましたけど…思ったより難しかった。面白かったですけど結構ゲームオーバーなっちゃいました…
次は…鉄騎!
難しかった!とにかく!もう!操作が…ボタン何押すのかわかんなかった!面白かったんですけどね?プレイ終わったら、頭がボーッっとしちゃいましたよ。ミッションひとつクリアできたので満足でした。コントローラー欲しくなりますね…かっこいい…
さてさて、次からは各ブースに展示してあったものを紹介します。
まずは記憶媒体!
なんか、歴史を感じますね…見慣れたものは後半部分にしかなかったですよ…
アナログゲームの展示もありました(プレイ不可)
遊びたかった…触りたかった…でも、やっぱりゲームはデジタルだけじゃなくてアナログも歴史があると思うので、もっとアナログのゲームも展示見たかったです。
とまぁ…たくさん展示もあるわけですが…個人的にはゲーム開発を志している人に見てもらいたいものがあるんですよ…実は各ブースにムービーが流れてます。ゲームの面白さについて簡単にまとめているんですが、それを是非とも見て欲しいです。見たら当たり前じゃんって思うかもしれないですけど、それは基礎であって応用しやすいものなので是非…!!! (写真撮っておけば紹介しやすかったな…)
次はマインクラフトの体験ブースです。プレイヤーが四人で、マインクラフト内で作られた科学未来館を舞台に宝探しを行います。
クオリティ高いです。はい…中もきちんと作られていて驚きました。二人で一ヶ月で制作したらしいです…ちょっとマイクラ欲しくなっちゃいました。
それと…PlaystationVRの体験もあって体験してきたのですが写真はありません。一人だったので撮る人がいません!!!でも、スタッフの方と対戦ゲームをしましたよ。面白かったです。PlaystationVRの感想としてコンシューマーゲームのコントローラーとしては十分有能です、でも没入感を本格的に求めたい人にはもの足りないって感じの感想ですね。コンシューマーのこれからが楽しみになるような体験でした。
ひとまずは以上で、レポートを終わりにしようかと思います。まぁ、レポートというよりも自分の感想ですが…
最後にざっと写真を貼って終わりにしようかと…
あ、ちなみにタイミング良くゲームセンターCXの撮影があってました。放映される日が楽しみです。そのときのDVDだけは買おうかなとか思っちゃってます。