Работа над Unity 6 ScoreText и Experience / обновлениеC#

Место общения программистов C#
Ответить
Anonymous
 Работа над Unity 6 ScoreText и Experience / обновление

Сообщение Anonymous »

Код: Выделить всё

using UnityEngine;
using TMPro;

public class ScoreManager : MonoBehaviour
{
public ScoreManager scoreManager;
public int score = 0; // Player's score
public TextMeshProUGUI scoreText; // Reference to the TextMeshPro text component

// Method to add points
public void AddPoints(int points)
{
score += points;
Debug.Log("Added points: " + points + ", New Score: " + score); // Debug-Log hinzufügen
UpdateScoreText();
}

// Method to update the score display
private void UpdateScoreText()
{
scoreText.text = score.ToString();
}
}

Код: Выделить всё

using UnityEngine;

public class Enemy : MonoBehaviour
{
private int currentHealth; // Current health of the enemy
private ScoreManager scoreManager;
private Transform playerTransform; // Reference to the player's transform
private int expAmount;

public EnemyData enemyData; // Reference to the ScriptableObject

private Animator anim;
public EnemyManager enemyManager; // Reference to the EnemyManager

public static CountdownSlider instance;
public ExperienceManager experienceManager;  // Reference to ExperienceManager

private void Start()
{
anim = GetComponent(); // Get Animator component
}

// Initialize method to set references
public void Initialize(ScoreManager scoreManager, EnemyManager enemyManager, Transform player, ExperienceManager experienceManager)
{
this.scoreManager = scoreManager; // Set the reference to ScoreManager
this.enemyManager = enemyManager; // Set the reference to EnemyManager
this.experienceManager = experienceManager; // Corrected this line
this.playerTransform = player; // Set the player reference
currentHealth = enemyData.health; // Initialize current health
expAmount = enemyData.expAmount;
}

public void Die()
{
if (enemyData = null)
{
if (scoreManager = null)
{
scoreManager.AddPoints(enemyData.pointsOnDeath);
}
if (experienceManager = null)
{
experienceManager.AddExperience(expAmount);
}

DropItems();
}

if (enemyManager != null)
{
enemyManager.RemoveEnemy(this);
}

Destroy(gameObject);
}

Код: Выделить всё

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

public class ExperienceManager : MonoBehaviour
{
public static ExperienceManager Instance;
[Header("Experience")]
[SerializeField] AnimationCurve experienceCurve;

int currentLevel, totalExperience;
int previousLevelsExperience, nextLevelsExperience;

[Header("Interface")]
[SerializeField] TextMeshProUGUI levelText;
[SerializeField] TextMeshProUGUI experienceText;
[SerializeField] Image experienceFill;

void Start()
{
UpdateLevel();
}

void Update()
{
// Removed the AddExperience call from Update
}

public void AddExperience(int amount)
{
totalExperience += amount;
CheckForLevelUp();
UpdateInterface();
}

void CheckForLevelUp()
{
if (totalExperience >= nextLevelsExperience)
{
currentLevel++;
UpdateLevel();
// Start level up sequence...  Possibly vfx?
}
}

void UpdateLevel()
{
previousLevelsExperience = (int)experienceCurve.Evaluate(currentLevel);
nextLevelsExperience = (int)experienceCurve.Evaluate(currentLevel + 1);
UpdateInterface();
}

void UpdateInterface()
{
int start = totalExperience - previousLevelsExperience;
int end = nextLevelsExperience - previousLevelsExperience;

levelText.text = currentLevel.ToString();
experienceText.text = start + " exp / " + end + " exp";
experienceFill.fillAmount = (float)start / (float)end;
}
}

Код: Выделить всё

using UnityEngine;

[CreateAssetMenu(fileName = "NewEnemyData", menuName = "Enemy Data")]
public class EnemyData : ScriptableObject
{
public GameObject enemyPrefab; // Prefab des Gegners
public int health; // Gesundheit des Gegners
public float speed; // Bewegungsgeschwindigkeit des Gegners
public int pointsOnDeath; // Punkte, die der Spieler erhält, wenn der Gegner stirbt
public GameObject[] dropItems; // Items, die der Gegner fallen lässt
public float spawnChance; // Wahrscheinlichkeit, dass dieser Gegner spawnt
public int damage; // Schaden, den dieser Gegner verursacht
public int expAmount; // Erfahrungspunkte die ein Gegner gibt.
}
К сожалению, я не знаю, почему текст не обновляется. В Unity у меня нет ошибок и все ссылки установлены правильно. Я действительно начинаю отчаиваться. Я перепробовал так много всего, но без каких-либо сообщений об ошибках новичку трудно понять, в чем может быть проблема.
я пробую blackbox.ai youtube google

Подробнее здесь: https://stackoverflow.com/questions/791 ... ork-update
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»