因此,當我輸入觸發器時,我有一個腳本位于播放器上,但它不會觸發。它應該將 1 添加到不同腳本中的變數分數,但它不起作用。我試圖測驗 Trigger 方法是否有效,它確實如此,它必須是 getcomponent 或其他問題。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnTrigger : MonoBehaviour{
[SerializeField] private GameObject ScoreManagerObject;
private ScoreManager ScoreManager;
private void Awake() {
if (ScoreManagerObject != null){
ScoreManager ScoreManager = ScoreManagerObject.GetComponent<ScoreManager>();
}
}
private void OnTriggerEnter(Collider other) {
if (ScoreManager != null){
//When the trigger is enterd adds 1 to the score
ScoreManager.score = ScoreManager.score 1;
Debug.Log("score " ScoreManager.score );
}
}
}
uj5u.com熱心網友回復:
在您的Awake()函式中,您嘗試獲取目標游戲物件的腳本,但您將值存盤在變數而不是類屬性中
你有什么 :
private void Awake() {
if (ScoreManagerObject != null){
ScoreManager ScoreManager = ScoreManagerObject.GetComponent<ScoreManager>();
}
}
你應該做什么:
private void Awake() {
if (ScoreManagerObject != null){
this.ScoreManager = ScoreManagerObject.GetComponent<ScoreManager>();
}
}
這樣, 的值ScoreManagerObject.GetComponent<ScoreManager>()將存盤在您的類屬性中,您的代碼現在應該訪問if您的OnTriggerEnter()函式中的
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/365684.html
上一篇:為什么StartsWith只在我的機器上回傳錯誤的值?
下一篇:具有泛型型別檢查的泛型方法呼叫
