2016-05-09 9 views
1

私のコードは次のとおりです。カウントポイントスペースシューティングゲーム団結

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は基本クラスですか?その場合は、すべてのGameControllerに一般的なメソッドではなく特定のメソッドであれば、AddScoreメソッドが定義された適切なコントローラにコントローラをキャストする必要があります。 – 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スクリプト&の参照を取得しようとします)(

スタートでそのコードを注意してください次のログを出力します。