所以每次我撞墻時我都試圖增加我的分數(IsTrigger)但是當我嘗試增加它時,它不起作用,仍然是 100
所以這是我有問題的代碼
public Text scoreText;
public int score = 0;
void Start()
{
scoreText.text = score.ToString();
}
// Add Some Score To The Text When The Player Hit The CheckPoint
void OnTriggerEnter(Collider collider)
{
if (collider.name == "Player")
{
score = 100;
scoreText.text = score.ToString();
Debug.Log(score);
}
}
uj5u.com熱心網友回復:
進行觸發/碰撞測驗時,請確保Debug.Log()在條件檢查之外添加一個
。在你的情況下,
void OnTriggerEnter(Collider collider)
{
if (collider.name == "Player")
{
score = 100;
scoreText.text = score.ToString();
Debug.Log(score);
}
Debug.Log("Just want make sure it indeed triggered.");
}
在大多數情況下,除了代碼問題之外,很有可能Rigidbody組件沒有添加到 GO 中。
另一部分我不確定,因為我很長一段時間沒有使用 Unity。如果需要,您可以將 UI 文本更新代碼移到觸發器之外。
uj5u.com熱心網友回復:
您需要在更改值后更新文本,在您的情況下,您必須根據新的“分數”值更新“scoreText”。這樣做的簡單方法是這樣的:
public Text scoreText;
public int score = 0;
void Start()
{
scoreText.text = score.ToString();
}
// Add Some Score To The Text When The Player Hit The CheckPoint
void OnTriggerEnter(Collider collider)
{
if (collider.name == "Player")
{
score = 100;
scoreText.text = score.ToString();
Debug.Log(score);
}
}
最好有一個名為“ChangeScore”的方法,它包括更新“score”值和同時更新“scoreText”。最好這樣做,因為如果您必須在其他地方更改分數,您可能會在其他情況下忘記更新文本。例子:
[Tooltip("The player's initial score.")]
[SerializeField] private int initScore = 0;
// Serialized since you have to set the reference for it.
[SerializeField] private Text scoreText;
private int score = 0;
void Start()
{
ChangeScore(initScore);
}
// Method used to change the current player's score and update the text.
void ChangeScore(int changeValue)
{
this.score = changeValue;
scoreText.text = score.ToString();
}
// Add Some Score To The Text When The Player Hit The CheckPoint
void OnTriggerEnter(Collider collider)
{
if (collider.gameObject.name == "Player")
{
ChangeScore(100);
Debug.Log(score);
}
}
另一個注意事項:我不會在檢查碰撞時使用標簽或名稱,最好檢查碰撞物件是否有 PlayerController 腳本
if(collider.GetComponent<PlayerController>())
代替
if (collider.gameObject.name == "Player")
uj5u.com熱心網友回復:
我修復了它我把代碼放在播放器腳本上而不是檢查點腳本上
void OnTriggerEnter(Collider collider)
{
if (collider.tag == "ScoreCheckPoint")
{
score = 100;
scoreText.text = score.ToString();
Debug.Log(score);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/371045.html
