はじめに
Unity 2018.3から.NET 4.xに変わったことにより以下のような書き方をすると
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
[SerializeField] private Text label;
// Start is called before the first frame update
void Start()
{
label.text = "ほげ";
}
// Update is called once per frame
void Update()
{
}
}
以下のようなWarningが出るようになりました。
Assets/Scenes/Test.cs(8,35): warning CS0649: Field 'Test.label' is never assigned to, and will always have its default value null
このWarningを回避する方法がUnity 2020.1.11f1以降で変わったので紹介します。
Unity 2020.1.11f1以降
何もしてなくてもワーニングがでない
Unity 2020.1.11f1からは何もしなくてもCS0649のWarningが出ないようになっています。
CS0649のWarningを出す方法
[Edit]→[Project Settings]→[Player]の各プラットフォームのSuppress Common Warningsのチェックマークを外すだけ
Unity 2020.1.10f1以前
CS0649を回避する方法はいくつかあります。
defaultで初期化する
[SerializeField] private Text label = default;
[SerializeField] privateをやめてpublicにする
public Text label;
#pragma waring disable 649で囲む
#pragma warning disable 649
[SerializeField] private Text label;
#pragma warning restore 649
-nowarn:649を含むcsc.rspファイルを用意する
Assetsフォルダ直下に下記の記述をした、csc.rspファイルを配置する
-nowarn:649
最後に
やっと対応されたかという気持ちですが、Warningを隠しているだけなのでデフォルトでチェックありでいいのだろうか?
コメント