Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
avatar image
0
Question by Wibbs · Feb 01, 2011 at 06:29 PM · design

Scripts/code sitting outside of individual scenes

Hey,

I am new to Unity but have some experience of coding in C++ and C#. I am currently trying to get my head around the best way of structuring code with Unity, and understand the way that scenes, assets and components work.

However, I am a little stumped with how executable code can sit outside of a particular scene, and if it does how it is instantiated and referenced from other code. The type of thing that would typically fall under this category would be 'Manager' type classes that need to be accessible in a lot of places in code. I understand that the need for these is significantly reduced with Unity - this is one of the reasons I have decided to use it, but I still have a need for this type of thing.

I would be extremely grateful for any pointers as to how this should be done.

Wibbs

Comment
Add comment
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

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by Bunny83 · Feb 01, 2011 at 07:06 PM

I'm always have a special scene with my manager scripts in it. That scene is loaded first and gets never loaded again. Within your script you should cal DontDestroyOnLoad() on your gameobject. That will prevent that gameobject (and all childs and scripts that are attached) from being destroyed at LoadLevel.

You may also consider a "unity style singleton". There are many ways to implement a singleton. unsave, save and very save, but it depends on what you need.

I'll guess you use C#

// unsave
public class MyGame : MonoBehaviour
{
   public static MyGame instance = null;
   void Awake()
   {
      instance = this;
   }
}

Or the better one:

// save
public class MyGame : MonoBehaviour
{
   private static MyGame m_Instance = null;
   public static MyGame instance
   {
      get 
      {
         if (m_Instance == null)
            m_Instance = (MyGame)FindObjectOfType(typeof(MyGame));
         return m_Instance;
      }
   }
}

Here the "super save" version, but it don't make much sense because most of time you need to setup some references to prefabs and stuff in the editor. If you create that GO from scratch it would be "naked".

// super save
public class MyGame : MonoBehaviour
{
   private static MyGame m_Instance = null;
   public static MyGame instance
   {
      get 
      {
         if (m_Instance == null)
         {
            m_Instance = (MyGame)FindObjectOfType(typeof(MyGame));
            if (m_Instance == null)
            {
               GameObject GO = new GameObject("MyGame");
               m_Instance = GO.AddComponent<MyGame>();
            }
         }
         return m_Instance;
      }
   }
}
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 Wibbs · Feb 01, 2011 at 09:16 PM 0
Share

That's brilliant info from both of you and has told me exactly what I was after.

Thanks,

Wibbs

avatar image
0

Answer by Jessy · Feb 01, 2011 at 06:37 PM

All scripts outside of folders named "Editor" are included in builds, even if they aren't used, as far as I know. (Most other assets can be included in the project but not be included in the build if they aren't necessary for the scene.) Regardless, even if I misinterpreted that fact at some point, there's no problem with what you want to do. At the very least, the scripts you need will be included. At least they always have been for me. ;-)

Comment
Add comment · 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

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

No one has followed this question yet.

Related Questions

The name 'Joystick' does not denote a valid type ('not found') 2 Answers

Tetris Unity game structure C# 3 Answers

Where is a good start to learn scripting/programming? 1 Answer

Any recommended books/resources on component-based design? 0 Answers

Create big city for car game? 2 Answers


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