A Minimal Complete Verifiable Example as requested in the comments:
There are 4 Scripts.
Combat:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Combat : MonoBehaviour { bool playerTurn = true; bool invActive = false; public Player Player; public Enemy Enemy; public Text[] textArray = new Text[6]; public Player savedPlayer; public Enemy savedEnemy; public Text[] savedArray; public Combat(Player Player, Enemy Enemy, Text[] textArrayPass) { savePlayer(Player); saveEnemy(Enemy); saveTextArray(textArrayPass); //textChanges(); // FightLoop(); textChanges(); } public void saveTextArray(Text[] textArray) { savedArray = new Text[6]; savedArray = textArray; //Debug.Log(savedArray[0].text); } public void savePlayer(Player Player) { savedPlayer = Player; } public void saveEnemy(Enemy Enemy) { savedEnemy = Enemy; } public void attackButton() { if (Input.GetKeyDown("e") == true) { Debug.Log(Player.health); FightLoop(); Debug.Log(Player.health); } } public void FightLoop() { PlayerAttack(); EnemyAttack(); textChanges(); } public void PlayerAttack() { savedEnemy.health = savedEnemy.health - savedPlayer.ar; } public void EnemyAttack() { savedPlayer.health = savedPlayer.health - savedEnemy.ar; } public void textChanges() { savedArray[0].text = savedPlayer.health.ToString(); savedArray[1].text = savedPlayer.armor.ToString(); savedArray[2].text = savedPlayer.ar.ToString(); savedArray[3].text = savedEnemy.health.ToString(); savedArray[4].text = savedEnemy.armor.ToString(); savedArray[5].text = savedEnemy.ar.ToString(); } // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { attackButton(); } private void Awake() { Combat fight = new Combat(Player, Enemy, textArray); } } Character:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Inventory { public int[] inventory; public Inventory(int inventorySlots) { inventory = new int[inventorySlots]; Debug.Log("Your Inventory has " + inventorySlots + " slots."); } } public class Character : MonoBehaviour { public Inventory charInventory; public int health = 125; public int armor = 10; public int cash = 100; public int ar = 45; public bool weaponEquipped; public Character() { Inventory charInventory = new Inventory(20); } //HaheaghehAEH public void attack(Character enemy) { int oldHealth = enemy.health; enemy.health = enemy.health - ar; int damage = oldHealth - enemy.health; Debug.Log(damage + " damage!"); } public Character returnChar() { Character x = new Character(); return x; } } Player:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : Character { public Player() { health = 150; ar = 45; } } Enemy:
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy : Character { public Enemy() { health = 87; ar = 15; Inventory enemyInventory = new Inventory(5); } } 
