2016-05-09 2 views
1

мой код в GameController является:Подсчет очков космический шутер единство

public void AddScore(int newscore) 
{ 
    score += newscore; 
    UpdateScore(); 
} 

void UpdateScore() 
{ 
    scoreText.text = "score " + score; 
} 

и мой код в destroyByContact:

public GameController gameController; 

void OnTriggerEnter(Collider other) 
{ 
    if (other.tag =="boundary") 
    { 
     return; 
    } 
    Instantiate(explosion, transform.position, transform.rotation); 
    if (other.tag == "player") 
    { 
     Instantiate(playerexplosion, other.transform.position, other.transform.rotation); 
    } 
    gameController.AddScore(scoreValue); 
    Destroy(other.gameObject); 
    Destroy(gameObject); 
} 

и единство отображения этой ошибки: ошибка CS1061: Тип GameController' does not contain a definition for AddScore»и нет метод расширения AddScore' of type GameController '(вы не указали директиву по использованию или ссылку на сборку?)

+4

Где находится 'scoreValue'? Обновите код в своем вопросе – Programmer

+1

Пожалуйста, покажите нам, как определяется ваш класс GameController. Является ли GameController базовым классом? Если это так, тогда вам нужно будет перевести ваш контроллер на соответствующий с помощью метода AddScore, если это конкретный метод, а не общий для всех GameControllers. – ManoDestra

ответ

1

I не знаю о вашем фактическом классе destroyByContact. Но я думаю, вы можете не объявлять объект или ссылаться на него.

using UnityEngine; 
using System.Collections; 

public class destroyByContact : MonoBehaviour { 

public GameObject explosion; 
public GameObject playerExplosion; 
public int scoreValue; 

private GameController gameController; 

void Start() 
{ 
    GameObject gameControllerObject = GameObject.FindWithTag("GameController"); 
    if (gameControllerObject != null) 
    { 
     gameController = gameControllerObject.GetComponent<GameController>(); 
    } 
    if (gameController == null) 
    { 
     Debug.Log("Cannot find 'GameController' script"); 
    } 
} 

void OnTriggerEnter(Collider other) 
{ 
    if (other.CompareTag("boundary")) 
    { 
     return; 
    } 

    if (explosion != null) 
    { 
     Instantiate(explosion, transform.position, transform.rotation); 
    } 

    if (other.tag == "Player") 
    { 
     Instantiate(playerExplosion, other.transform.position, other.transform.rotation); 
     gameController.GameOver(); 
    } 

    gameController.AddScore(scoreValue); 
    Destroy(other.gameObject); 
    Destroy(gameObject); 
} 

}

Пожалуйста, обратите внимание, что код в

начало()

пытается получить ссылку в GameController сценария & Если сценарий не упоминается это будет напечатайте следующий журнал.

Смежные вопросы