Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
This question was closed Apr 11, 2020 at 09:12 AM by salvolannister for the following reason:

La domanda ha avuto risposta, è stata accettata la risposta giusta

avatar image
0
Question by salvolannister · Apr 04, 2020 at 12:23 PM · c#abstractvirtual functions

Monosingleton: Call a singleton method

Good afternoon folks,

I'm trying to use a generict abstract class to make a MonoSingleton [example][1], but when I call a method that implements it: e.g the method DoSomething() from the class ClientManager: MonoSingleton I receive this error: MonoSingleton doesn't contain the implementation of DoSomething

How I call the method outside the singleton class:

  public void JoinTheSession()
     {
         ClientManager_2.Instance.CallServerForPrimitives();
         Close();
     }

How the method is implemented in ClientManager:

   public void CallServerForPrimitives()
     {
         _hubConnection.InvokeAsync("GetPrimitives");
     }

I also noticed that visul studio reminds me to the MonoSingleton Class when I do "Ctrl + RightClick" on the ClientManager.Instance.

Implementation of the Monosingleton:

 public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T> 
 {
     private static MonoSingleton<T> _instance;
 
     public static MonoSingleton<T> Instance
     {
         get
         {
             if (_instance == null)
                 Debug.Log(typeof(T).ToString() + " is NULL.");
                 return _instance;
         }
     }
 
     private void Awake()
     {
         if (_instance != null && _instance != this)
         {
             Destroy(this.gameObject);
         }
         else
         {
             _instance = this as T;
         }
         Init();
     }
 
     public virtual void Init()
     {
 
     }
 }

Implementation of a script I would like to be MonoSingleton

 public class ClientManager_2 : MonoSingleton<ClientManager_2>
 {
 public int Variable;
  public void someMethod(){}
 }

Any suggestions is appreciated! Thank you :) [1]: https://gist.github.com/onevcat/6025819

MY SOLUTION:

In the Method where I want to use the Monosignleton CLientManager I do this:

 //declare a variable CleintManager:
 
 ClientManager ClientMan;
 
 // get the singleton instance
 
 ClientMan= (ClientManager) ClientManager.Instance;
 ClientMan.SomeMethod();









Comment
Add comment · Show 6
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image sacredgeometry · Apr 05, 2020 at 12:46 PM 0
Share

You need to provide us with your implementation of the singleton (i.e. the Client$$anonymous$$anager).

avatar image salvolannister sacredgeometry · Apr 09, 2020 at 09:51 AM 0
Share

Check if you can, I added more details

avatar image sacredgeometry salvolannister · Apr 09, 2020 at 06:28 PM 0
Share

The casing is different in your examples some$$anonymous$$ethod is not the same thing as Some$$anonymous$$ethod.

avatar image pihels · Apr 05, 2020 at 01:19 PM 0
Share

Have you tried using lowercase instance ins$$anonymous$$d on Client$$anonymous$$anager_2.Instance? In you singleton script the variable is lowercase.

avatar image salvolannister pihels · Apr 05, 2020 at 05:33 PM 0
Share

That's not my implementation but is very similar, by the way from Visual studio Client$$anonymous$$anager_2.Instance is not signed as a error

avatar image zwcloud · Dec 31, 2021 at 07:08 PM 0
Share

This seems to be a better implementation: https://forum.unity.com/threads/singleton-monobehaviour-script.99971/#post-5812075

2 Replies

  • Sort: 
avatar image
0
Best Answer

Answer by sacredgeometry · Apr 09, 2020 at 06:37 PM

Your MonoSingletons generic type constraint is of another MonoSingleton<T> change it to a MonoBehaviour and update all references in the singleton to T instead of MonoSingleton alt text


screenshot-2020-04-09-at-193758.jpg (510.1 kB)
Comment
Add comment · Show 7 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image sacredgeometry · Apr 09, 2020 at 06:49 PM 0
Share

Once you have done that storing a reference to the singletons instance (I am not sure I would though) will be as simple as creating a Client$$anonymous$$anager property or field and setting it to the Client$$anonymous$$anger.Instance then referencing it. i.e:

     Client$$anonymous$$anager Client = Client$$anonymous$$anager.Instance;
 
     void Start()
     {
         Client.Some$$anonymous$$ethod();
     }
avatar image salvolannister sacredgeometry · Apr 09, 2020 at 09:06 PM 0
Share

That's what I was looking for! Even if I don't understand exactly why it works. Anyway with your solution there is no more need to make a declaration of Client... Thank you :)

avatar image JxWolfe · Apr 09, 2020 at 06:55 PM 0
Share

he's ALREADY DECLARED HIS SOLUTION! (while I got off topic yes, the main point was for him to close the thread.)

avatar image sacredgeometry JxWolfe · Apr 09, 2020 at 06:59 PM 0
Share

His solution is a bit of a non solution. His code is a workaround to a problem he created needlessly.

avatar image JxWolfe sacredgeometry · Apr 09, 2020 at 07:01 PM 0
Share

you're not wrong. but I doubt he'd change it now.

Show more comments
avatar image
0

Answer by JxWolfe · Apr 09, 2020 at 06:33 PM

yea I was going to put your solution. Looks like you already found it. (sorry for not seeing it sooner) Because all you need to get the reference to the game object (the physical script) in order to call anything that isn't static. However, as Instance is static, any script can reference it, and then they have a "link" to the physical in-game script.


I almost forgot what I was going to say. As you've solved your own issue, please close the thread.

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image sacredgeometry · Apr 09, 2020 at 06:37 PM 0
Share

Thats not why its not working

Follow this Question

Answers Answers and Comments

707 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

true initialized bool is false after compiling 1 Answer

Simple Question: Animations and Base Class 1 Answer

Making a bubble level (not a game but work tool) 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges