2017-04-24 7 views
1

このコードは、私が作っているゲームからのものです。目的はロケット部品を回収することです。パーツが収集されると、後で消えることになりますが、パーツ変数に追加することはありません。私のコードに問題があります

using System.Collections; 
using UnityEngine.UI; 
using System.Collections.Generic; 
using UnityEngine; 

public class Collection : MonoBehaviour { 

private int Parts; 
public Text CountPart; 
private string Amount; 

void Start() 
{ 
    Parts = 0; 
    SetPartText(); 
} 

// Update is called once per frame 
void Update() { 
    if (Parts == 10) 
    { 
     Application.LoadLevel("DONE"); 
    } 
} 

void OnMouseDown() 
{ 
    gameObject.SetActive(false); 
    Parts = Parts + 1; 
    SetPartText(); 
} 

void SetPartText() 
{ 
    Amount = Parts.ToString() + "/10"; 
    CountPart.text = "Rocket Parts Collected: " + Amount; 
} 
} 
+0

''「それが可変部分に追加していない」 - あなたは何を意味しますかそれ?ここで実際に何がうまくいかないのですか? – David

+0

このスクリプトを含む10個のロケットパーツのうち最初のものを収集すると、それはパーツ変数に追加され、ロケットパーツは無効になりますが、ユーザーが2番目のロケットパーツを収集すると2番目のロケットパーツは無効になりますこれは、部品変数 – Joshua

+0

には追加されません。これは、ここで正しく実行されます: 'Parts = Parts + 1;'これはデバッガを使い始める良い機会のようです。コードが実行され、実行時の値と動作を観察するたびに、行単位でコードをステップ実行できます。そうしたら、観察された行動は、期待される行動とは具体的にどこに違いますか?具体的に何が起こり、何が起こると思いますか? – David

答えて

0

まず、あなたがロケットの部品を収集し、その後、非表示/それらを破壊し、またあなたのゲームオブジェクトで、部品点数を追加したい、ここでユースケースを考える必要があります。

あなたの現在のコードでは、パーツを収集する現在のプレイヤーを無効にする問題があります。そのため、最初の部分を収集するときにプレイヤーを無効にすると、別のアイテムを収集できなくなります。

ソリューションは、(偽)あなたは回収部の参照を取得し、それをのsetActive作ることです

using System.Collections; 
using UnityEngine.UI; 
using System.Collections.Generic; 
using UnityEngine; 

public class Collection : MonoBehaviour { 

private int Parts; 
public Text CountPart; 
private string Amount; 
public GameObject collectedGameObject; 
void Start() 
{ 
    Parts = 0; 
    SetPartText(); 
} 

// Update is called once per frame 
void Update() { 
    if (Parts == 10) 
    { 
     Application.LoadLevel("DONE"); 
    } 
} 

void OnMouseDown() 
{ 
     //here you need to initialize the collectedGameObject who is collected. you can use Raycasts or Colliders to get the refrences. 
    collectedGameObject.SetActive(false); 
    Parts = Parts + 1; 
    SetPartText(); 
} 

void SetPartText() 
{ 
    Amount = Parts.ToString() + "/10"; 
    CountPart.text = "Rocket Parts Collected: " + Amount; 

} 
} 
関連する問題