Necessary to have separate script for every Unity 4.6 text field?

I have the following script attached to a unity UI text object. it displays player 1’s money.
I feel however that this is not proper coding practice since if I have multiple players, I would need to create a separate script for each one and attach that each script to a separate text field. Is there a better way of doing this?

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

public class TextScript : MonoBehaviour {
    public Player player1;

    private Text text;
    private int money=0;
    private string s_money;
    private GameObject obj;
    void Awake() {
        text = GetComponent <Text> ();
        text.text = "test";

    

        GameObject goPlayer = GameObject.Find("PlayerGameObjectName");
      
        if (player1 != null) {
            player1 = goPlayer.GetComponent<Player>();
        }

    }

    void Update(){
        text = GetComponent <Text> ();
        money=player1.Money;
        s_money=money.ToString();
        text.text = "you have " + s_money+ " Dollars";
    }
}

Your issue is that you are hardcoding your player into the script. If possible, use the inspector to hook the player into this text script via the inspector. Or, if you need to use the GameObject.Find method, pass in a variable rather than a hard coded string,

[SerializeField]
private string playerName;

//in Awake

Gameobject goPlayer = GameObject.Find(playerName);

now you only have to write a single script, attach it to each text object that tracks money, and change the playerName variable in the Inspector.