2015-12-23 2 views
1

В моей игре есть оценка. Когда объект сталкивается, в счет добавляется добавочный инкремент. Есть один табло. То, что происходит в моей игре, заключается в том, что когда объект сталкивается, он захватывает табло, чтобы показать только собственную историю персонажей. Когда следующий объект сталкивается, он берет на табло и показывает свою личную историю. Я пытаюсь показать оценку амальгамы всех предметов, собранных вместе, каждая из которых вносит свой вклад в общую сумму.Приращение целого числа с несколькими источниками ввода C#

void OnCollisionEnter (Collision col) 
{ 
    if(col.gameObject.name == "Plane") 
    { 
     score += 50; 
     textMeshComponent = GameObject.Find ("Score").GetComponent<TextMesh>(); 
     textMeshComponent.text = score.ToString(); 

    } 
} 

Есть 10 из (col.gameObject.name) и есть один «Самолет», что все они взаимодействуют с.

Как я могу составить оценку конгломерата, как я описал? Я действительно не понимаю, как манипулировать (col.gameObject.name) стороной этого уравнения.

Спасибо за ваш совет.

+0

Лучше всего предположить, что оценка является членом gameObject (следовательно, каждый объект поддерживает собственный счет). Сделайте оценку участником Plane и сделайте его доступным для gameObjects. – Ian

+0

Оценка - фактически 3D-текст, поэтому это его собственный независимый GameObject –

+0

Эта оценка: 'GameObject.Find (« Score »)' это собственный объект, но этот счет: 'score + = 50;', похоже, принадлежит к отдельной игре объекты. – Ian

ответ

0

Сделать score являющийся член Plane, вместо this, и сделать его public так все остальные геймобжекты могут получить его.

Вы также можете создать счет как свой собственный gameObject или создать объект gameObject, который содержит все глобальные переменные.

0

Позвольте мне предложить другой подход, хотя и не рекомендуется textMeshComponent.text = (оценка + (int.Parse (textMeshComponent.text))). ToString(); теперь это добавит точки в целом, независимо от того, каждый игровой объект добавит свой собственный к основному значению

0

Рассмотрите возможность наличия объекта в вашей сцене, единственная задача которого - подсчет (и, возможно, отображение) оценки. Назовите его ScoreController.

Всякий раз, когда происходит событие, для которого вы хотите присудить оценку игроку, ответственный код просто вызывает ваш ScoreController и сообщает им, сколько баллов для награждения.

Ваш ScoreController GameObject может иметь сценарий как это:

public class ScoreController : MonoBehaviour 
{ 
    public TextMesh scoreDisplay; 

    public int Score { get; private set; } 

    void Start() 
    { 
     UpdateView(); 
    } 

    public void AwardScore(int amount) 
    { 
     Score += amount; 
     UpdateView(); 
    } 

    private void UpdateView() 
    { 
     scoreDisplay.text = Score.ToString(); 
    } 
} 

Теперь другой код может выиграть награду по телефону

GameObject.FindObjectOfType<ScoreController>().AwardScore(123); 

Если вы хотите, чтобы читать по смежным темам, рассмотрим чтение о модель проектирования Model-View-Control и о SoC (разделение проблем).

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