ぐうたら備忘録

Unityとか興味のあること色々。

Visual Studio 2017 でビルド後のコマンドを指定する

ビルド後にファイルを指定の位置に移動させる

コマンドの設定画面は、
プロジェクト右クリック→プロパティ→ビルドイベント
から開くことができる。

今回は、ビルド後に、自作のプラグイン.dllファイルを、
.exeファイルが存在するフォルダのサブフォルダ「Plugins」に
自動的に移動させたいと思った。

そこで、以下のように設定した。
f:id:gootalife:20171026021857p:plain
ビルド後に、出力フォルダに移動して「Plugin」フォルダを作成して、
拡張子が.dllのファイルををすべて「Plugin」フォルダ配下に移動している。

これだけでは読み込んでくれない

サブフォルダのdllを参照するときにはconfigファイルにも変更が必要なようだ。
プロジェクトの「~.config」を開いて以下を追記

<configuration>
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="Plugins"/>
      </assemblyBinding>
    </runtime>
</configuration>

これでサブフォルダ内の読み込みができるようになる

privatePath="Plugins"

の部分を変更することで読み込みたいフォルダを変更、追加できる。

結果

.exeのあるフォルダがごちゃごちゃしなくてスッキリ!

VirtualBoxにUbuntu16.04.3をインストールしてRailsの環境+αを作ったときのメモ

OSインストール後のセットアップメモ

完全に自分用

// 必要なもの
sudo apt-get install -y git libssl-dev ruby-dev libreadline-dev sqlite3 libsqlite3-dev nodejs
sudo apt-get update

// rbenvのインストール
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

// rbenvがインストールできているか確認
rbenv -v

// Rubyのバージョンの指定
rbenv install --list
rbenv install 0.0.0
rbenv global 0.0.0

// Rubyのバージョン確認
ruby -v

// Railsのインストール
gem install bundler
gem install rails

// VScodeのインストール
sudo dpkg -i ファイル名.deb

// 共有フォルダ
// デバイス→Guest Additions CD実行後
// 共有フォルダへのアクセス権追加
sudo gpasswd --add ユーザ名 vboxsf
// 再起動

// Google Chromeのインストール
// 公式サイトからダウンロード
sudo apt-get install libappindicator1
sudo dpkg -i ファイル名.deb

とりあえずおわり。

モンハンの装備シミュレーターを作り始めた。

いきなりどうした

PS4でモンハンの新作が来るってことは?

間違いなく買う。

だったら装備の組み合わせ考えるじゃん。
これ、モンハンの一番面白くて一番時間使うところ。

なら装備シミュレーター作っちゃえよというわけよ。

進捗

とりあえず読み込みから表示まで。
あとは装飾品とか発動するスキルの判定とかを足していく予定。
f:id:gootalife:20170822180929p:plain
VisualStudioが有能すぎてGUI周りがサクサク進む~。

ラズベリーパイを購入~

ラズベリーパイを購入

amazonで一式購入。(誕生日プレゼントに買ってもらったw)
お手軽な値段もしっかりしたミニミニPCですごいなーって思った。
キーボードやマウスは余ってたもので代用。

開封前の写真撮り忘れた。
f:id:gootalife:20170815153004j:plain

セットアップ

↓参考にさせていただいたサイト様。
liginc.co.jp
SDカードが64GBだったので
FAT32でのフォーマットに手こずった。色々なソフトを試した。
最終的にできたのが↓
I-O DATA ハードディスクフォーマッタ | サポートライブラリ | IODATA アイ・オー・データ機器 | IODATA アイ・オー・データ機器
ここからソフトをダウンロードして使った。

やってみたいこと

VPNサーバーを立てたり、ファイルを触れるようにしたいな~とか。

C#で簡単な計算機を作ってみた

C#GUIを触ってみた

VisualStudioを使うと見た目の部分は簡単に作れた。
(部品をD&Dするだけ、ほんとに楽だった。)
プロパティで値を変えるとそれに対応するところを書き足したり、
書き換えてくれているようだ。ボタンを押したときに
文字列の結合や計算処理をする関数を作った。

f:id:gootalife:20170722173654p:plain

動いてるところ

f:id:gootalife:20170722173657g:plain
0で割ると∞になりやす。

おわりに

VisualStudioを使うとC#はすごくサクサク書けて
気持ちがいいね~。

Unityで別のシーンを読み込む

読み込みたいシーンを用意する

左上のFileから新しいシーンを作って保存。
今回はわかりやすいようにUIを適当に配置して

f:id:gootalife:20170628211333p:plainf:id:gootalife:20170628211334p:plain

としてみた。

シーンを読み込むためのスクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneLoad : MonoBehaviour {

    void Update () {
	if (Input.GetKeyDown (KeyCode.Space)) {
		SceneManager.LoadScene("test2");
	}
    }

}

スペースキーを押したとき、"test2"という名前のシーンを読み込む仕組みだ。

シーンを読み込む

作成したスクリプトをSceneLoadと名付けた空のオブジェクトにアタッチしていく。
(これは移動前のシーンに作成する。)

f:id:gootalife:20170628210826p:plain

できたらゲームを再生してみる。
スペースキーを押すと画面が切り替わるのがわかるはず。

最後に

これで別シーンの読み込みができるようになった。
タイトルとか曲選択とかプレイモードの切り替えに使っていくぞ~。

Unityでcsvファイルの読み込みをする

csvファイルを読み込むクラス

csvファイルはコンマで要素を区切ったファイルだから、コンマ区切りで
2次元配列に要素を格納していく。
そこでCSVReader君をお呼びした。
私の制作中の音ゲースクリプトの一部をチラ見せ。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class CSVReader : MonoBehaviour {

	public List<string[]> csvDatas = new List<string[]>();

	public void CsvRead (string musicName) {
		// csvをロード
		TextAsset csv = Resources.Load (musicName) as TextAsset;
		StringReader reader = new StringReader (csv.text);
		while (reader.Peek () > -1) {
			// ','ごとに区切って配列へ格納
			string line = reader.ReadLine ();
			csvDatas.Add (line.Split (','));
		}
        }
}

CsvRead関数に曲名を引数として持たせ、曲名のファイルを読み込ませている。
読み込む場所はResources/下だけど、

TextAsset csv = Resources.Load ("abc/" + musicName) as TextAsset;

とするとResources/abc/下で曲名のファイルを探してくれる。

読み込んでみる

ここで、さらにゲームの流れを管理しているGameManagerさんを用意する。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GameManager : MonoBehaviour {

	public string musicName; // 曲名
	private CSVReader musicData = new CSVReader (); // 譜面データ

	void Start() {
		musicData.CsvRead(musicName);
	}
}

これをGameManegerと名付けたオブジェクトにアタッチしよう。
今回用意したテスト用のtest.csvはこんな感じ。

1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16

忘れずInspector上から曲名を仮入力して、シーンを再生すると~。f:id:gootalife:20170627124310p:plain

_人人人人人人人人人_
> 何も起こらない <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄

そりゃそうだよ読み込んでるだけだからね。

読み込めてるか確認しよう

Debug.Logさんの出番だよ~

っということでDebug.Logで読み込めてるか確かめてみよう。

void Start() {
  musicData.CsvRead(musicName);
  for (int i = 0; i < musicData.csvDatas.Count; i++) {
	for (int j = 0; j < musicData.csvDatas[i].Length; j++) {
	  Debug.Log("csvDatas[" + i + "][" + j + "] = " + musicData.csvDatas[i][j]);
	}
  }
}

適当にforを回してみる。
f:id:gootalife:20170627124315p:plain
読み込めてるぞ~。

最後に

これでcsvファイルを2次元配列に格納する仕組みができた。
これを応用して音ゲーの譜面情報として使っていく。

次はシーンの読み込みについて書こうかな?