PR

[Unity]Unity 2020.1.11f1からCS0649がでなくなった話

Unity

はじめに

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を隠しているだけなのでデフォルトでチェックありでいいのだろうか?

おすすめ参考書

コメント

タイトルとURLをコピーしました