Unity(C#)で書いちゃダメなコード
この間Unityをやっているときによくわからんエラーが起こっていたのでまとめ(2020/3/1現在2つ)
Listをdefaultで初期化
まじでわからん。なぜ?って思うけどやればわかる。
List<T>ListName = default;
List<int> ListName = default; //defaultで初期化するとエラー起きる
void Start()
{
ListName.Add(1);
}
解決法
List<int> ListName = new List<int>; //List<T>と書いてあげれば解決する
void Start()
{
ListName.Add(1);
}
・3/1追記
defaultやnullだとListが存在しないってことになってしまいエラーが発生します。
逆にList<T> = new List<T>();だと要素数が0のリストが生成されるのでエラーが起きないです。
コメントで教えてくださったalbireoさんそしてMidoliyさんありがとうございました。
Particleを再生し続ける
bool bがtrueの時は再生falseなら停止って処理を書いたときにハマった。
if(b){
par.Play();
}else{
par.Stop();
}
bool b = false;
ParticleSystem par = null;
void Update()
{
if(b){
par.Play();
}else{
par.Stop();
}
}
どうやら連続でParticleを再生し続けるとバグるらしい。
ここに書いてあった
解決法
値が前のフレームと違ったときにだけ実行させればいいので
public bool b = false;
public ParticleSystem par = null;
private bool before;
private bool after;
void Update()
{
after = b;
if (before != after)
{
State(b);
}
before = b;
}
void State(bool state)
{
if (state)
{
par.Play();
}
else
{
par.Stop();
}
}
今現在はここまでです。随時追加していくつもりです!
では、良いUnityライフを!