ぱぴブログ

さんたろのブログ

ゲーム開発が好きな人のひとりごと

Unity制作のメモ

はじめに

みなさんこんにちは。
ノーパソにUnrealEngineが入らなくて悲しい気持ちのさんたろーです。

自作ゲーム第二弾を開発中でして、
つまづいた点があったら随時追記していきます。

エラー対処

UnityHubからインストールできない

今回は少し古いですが、2018年4月にでたLTS版で開発しようと。
UnityHubの右上からインストールしようとしたのですが、インストール押しても動かない(エラーもなく、コマンドプロンプトが一瞬呼ばれるが、以後なにも起きない)

仕方なくUnityをそのままインストール。
そして、インストールしたエディタをUnityHubから参照することでとりあえず解決。

BuildSupportの記述がエディタ一覧からは無いのが不安だが、プロジェクトには記載されている。

f:id:papyrustaro:20191214164752p:plain
直接入れて参照したが、ビルドサポート欄がない

f:id:papyrustaro:20191214164830p:plain
プロジェクトからはビルドサポートが見える

「アクセス許可で禁じられた方法でソケットにアクセスしようとしました」

UnityHubからプロジェクトを起動すると
「アクセス許可で禁じられた方法でソケットにアクセスしようとしました」
というエラーがConsoleに...

PC再起動し、UnityHubを起動すると
「サーバーは今応答していません」
というエラーが

UnityHubからライセンス認証を更新することで解決した

SerializeField

privateなフィールドをInspector上からイジれるSerializeField。
大変便利だが、readonlyではできない。
コンストラクからしか変えられない(値型は)

同じprefabなのに、ぬるぽになるときとならないときがある

特にこれが起こるのがScriptからGetComponentをするとき。
実行順序の問題で、Aがまだnullの状態のときに、Aを参照しようとしてしまうことから発生しがち。

private SampleClass sample;

//悪い例
public SampleClass Sample {
  get{ return this.sample; }
}

//改善例
public SampleClass Sample{
  get{
    if(this.sample == null) this.sample = GetComponent<SampleClass>();
    return this.sample;
  }
}

参考記事↓

baba-s.hatenablog.com

使える知識

マジックナンバーは列挙型に

火属性は0、水属性は1...という風にマジックナンバーを割り当てると、
「木属性何番だったかな...」とわかりにくい。

そこで列挙型(enum)を利用するとInspector上からもこの通り

f:id:papyrustaro:20191217111746p:plain
列挙型を用いるとInspector上からわかりやすい