私は線幅を変更したいと思っていますが、少し問題があるようです。私はそれを設定している方法は、私は6つの異なる線の幅を持っていると、ユーザーが次の線を描画するときに反映する必要がある幅をクリックしたとき。現在、私はエラーが発生しています:行幅を変更する、オブジェクト参照がオブジェクトのインスタンスに設定されていません
"NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていないBrushWidth.SetThickness(Int32 _lineNum)(Assets/_Scripts/BrushWidth.cs:46)BrushWidth.Start()(私はここで何をしないのです
私は私が私を作ったと思った; 30 lineConfig.Scale = 0.35f、ラインスケールを変更行を参照している)」
:資産/ _Scripts/BrushWidth.csで? Public LineConfig lineConfigを使用したインスタンス参照;助けをありがとう!
using UnityEngine ;
using System.Collections ;
using UnityEngine.UI ;
using System ;
using PaintCraft.Tools ;
public class BrushWidth : MonoBehaviour
{
public Button btn1, btn2, btn3, btn4, btn5, btn6 ;
public float brushSize ;
public Text brushNameTextBox ;
public String brushName ;
public LineConfig lineConfig ;
void Awake()
{
lineConfig = gameObject.GetComponent<LineConfig>() ;
btn1.onClick.AddListener (() => SetThickness (1)) ;
btn2.onClick.AddListener (() => SetThickness (2)) ;
btn3.onClick.AddListener (() => SetThickness (3)) ;
btn4.onClick.AddListener (() => SetThickness (4)) ;
btn5.onClick.AddListener (() => SetThickness (5)) ;
btn6.onClick.AddListener (() => SetThickness (6)) ;
}
void Start()
{
// Set Starting Thickness
SetThickness (3) ;
}
void SetThickness (int _lineNum)
{
switch (_lineNum)
{
case 1:
lineConfig.Scale = 0.1f ;
brushName = "Thin " ;
break ;
case 2:
lineConfig.Scale = 0.2f ;
brushName = "Light " ;
break ;
case 3:
lineConfig.Scale = 0.35f ;
brushName = "Regular " ;
break ;
case 4:
lineConfig.Scale = 0.5f ;
brushName = "Medium " ;
break ;
case 5:
lineConfig.Scale = 0.75f ;
brushName = "Thick " ;
break ;
case 6:
lineConfig.Scale = 1.0f ;
brushName = "Heavy " ;
break ;
default:
break ;
}
brushNameTextBox.text = brushName ;
}
}
を助けました! 'Awake()'は 'Start()'の前に実行されます。 –
@ user3185569 Awakeが呼び出され、Startが呼び出されます。 @OPそれに接続された 'LineConfig'をGameObjectを' lineConfig'スロットにドラッグします。 – Programmer
BrushWidthスクリプトの前に '[RequireComponent(typeof(LineConfig)]]属性を追加する –