Can I do two Singleton Pattern Design scripts in my scene Unity C#
I want to know is it possible to have two singleton pattern design scripts . I tried to fix the problem by making making functions public . The script I have is not access the MyclockScript . I got one error and its saying Game.cs(6,9): error CS0246: The type or namespace name `myclock' could not be found. Are you missing a using directive or an assembly reference? I don;t know what to do at this point
using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class Game : MonoBehaviour {
private myclock MyClockScript; void Start () { myClock = GetComponent(); }
// Update is called once per frame
void Update () {
if (myClock.m_leftTime <= 0 || GameManagerSingleton.instance.score > 50)
{
SceneManager.LoadScene("I");
}
}
}
using UnityEngine; using System.Collections; using UnityEngine.UI; public class MyClock : MonoBehaviour { public int Minutes = 0; public int Seconds = 0;
private Text m_text;
public float m_leftTime;
private void Awake()
{
m_text = GetComponent<Text>();
m_leftTime = GetInitialTime();
}
public void Update()
{
if (m_leftTime > 0f)
{
// Update countdown clock
m_leftTime -= Time.deltaTime;
Minutes = GetLeftMinutes();
Seconds = GetLeftSeconds();
// Show current clock
if (m_leftTime > 0f)
{
m_text.text = "Time : " + Minutes + ":" + Seconds.ToString("00");
}
else
{
// The countdown clock has finished
m_text.text = "Time : 0:00";
}
}
}
private float GetInitialTime()
{
return Minutes * 60f + Seconds;
}
private int GetLeftMinutes()
{
return Mathf.FloorToInt(m_leftTime / 60f);
}
private int GetLeftSeconds()
{
return Mathf.FloorToInt(m_leftTime % 60f);
}
}
Answer by btmedia14 · Jun 10, 2016 at 08:20 PM
A couple of things:
In the first Game class, member variable should be private MyClock myclock;
since the name of the second referenced class is MyClock.
If indeed you want the class named MyClockScript, then the member in Game class should be private MyClockScript myclock;
and rename the second class to MyClockScript.
I got another error. When I change the $$anonymous$$yClockScript myclock
error CS0176: Static member `Game$$anonymous$$anagerSingleton.score' cannot be accessed with an instance reference, qualify it with a type name ins$$anonymous$$d
using UnityEngine; using System.Collections; using UnityEngine.UI;
public class Game$$anonymous$$anagerSingleton : $$anonymous$$onoBehaviour { public static Game$$anonymous$$anagerSingleton instance = null;
public static int score;
private Text text;
void Awake()
{
text = GetComponent <Text> ();
score = 0;
if (instance != null && instance != this)
Destroy(gameObject); // Ensures that there aren't multiple Singletons
instance = this;
}
void Update()
{
text.text = "Score: " + score;
Debug.Log("Score: " + score);
}
It's talking about this script :using UnityEngine; using System.Collections; using UnityEngine.Scene$$anonymous$$anagement; public class Game : $$anonymous$$onoBehaviour {
private $$anonymous$$yClockScript myClock; void Start () { myClock = GetComponent<$$anonymous$$yClockScript>(); }
// Update is called once per frame
void Update () {
if (myClock.m_leftTime <= 0 || Game$$anonymous$$anagerSingleton.instance.score > 50)
{
Scene$$anonymous$$anager.LoadScene("I");
}
}
}
Since the variable public static int score;
is static, it is accessed using the class name directly: replace Game$$anonymous$$anagerSingleton.instance.score
with Game$$anonymous$$anagerSingleton.score
Typically singletons contain private constructors with get accessor method to return the one singleton instance.
Changed the comment from an Answer to a Comment and converted the actual answer to be the accepted answer.
Your answer
![](https://koobas.hobune.stream/wayback/20220612082650im_/https://answers.unity.com/themes/thub/images/avi.jpg)