Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 14 Next capture
2021 2022 2023
2 captures
13 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 /
  • Help Room /
avatar image
0
Question by zoeyschlemper · Oct 24, 2020 at 11:52 PM · nullreferenceexceptionparticlesystemparticle systemnull reference exceptioncustom inspector

"Do not create your own module instances" Warning for ParticleSystem with custom Inspector

I have a particle system set up, and a custom inspector panel that turns it into a "smart" asset by keeping some settings relative to each other.

So far it works, but it is giving me a warning that I dont understand. How do I fix this warning, and what does it mean? I am also trying to learn C# from a Python BG.

 NullReferenceException: Do not create your own module instances, get them from a ParticleSystem instance
 UnityEngine.ParticleSystem+EmissionModule.set_rateOverTime (UnityEngine.ParticleSystem+MinMaxCurve value) (at <b6edb49129684880865710f98e97a458>:0)
 particle_customizer.ChangeParticleNum (System.Int32 num_particles) (at Assets/particle_customizer.cs:16)
 particle_editor.OnInspectorGUI () (at Assets/Editor/particle_editor.cs:19)
 UnityEditor.UIElements.InspectorElement+<>c__DisplayClass58_0.<CreateIMGUIInspectorFromEditor>b__0 () (at <1fe7a3c0284a456b9681b7a93141c89a>:0)
 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)


Here are my 2 scripts. One is an Editor script and the other is a particle system with the script added as a component.

Component of ParticleSystem:

 using UnityEngine;
 
 [ExecuteInEditMode]
 
 [RequireComponent(typeof(ParticleSystem))]
 public class particle_customizer : MonoBehaviour
 {
     public ParticleSystem ps;
 
     public void ChangeParticleNum( int num_particles)
     {
         ps = GetComponent<ParticleSystem>();
         var emission = ps.emission;
         emission.rateOverTime= num_particles;
 
     }
 
 }
 

Editor Script:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEditor;
 
 [CustomEditor(typeof(particle_customizer))]
 public class particle_editor : Editor
 {
     public int num_particles;
 
     public override void OnInspectorGUI()
     {
         base.OnInspectorGUI();
         num_particles = EditorGUILayout.IntField("Num Particles", num_particles);
         particle_customizer ps_custom = (particle_customizer)target;
         ps_custom.ChangeParticleNum(num_particles);
 
     }
     // Start is called before the first frame update
     void Start()
     {
         
     }
 
     // Update is called once per frame
     void Update()
     {
         
     }
 }

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

1 Reply

· Add your reply
  • Sort: 
avatar image
1

Answer by marek_PLH · Feb 10, 2021 at 04:42 PM

Problem is in this line:

      var emission = ps.emission;

Explicit type of var here is ParticleSystem.EmissionModule, that is struct and passed by value, not reference. This means that it will create copy as an emission variable and will not change values of ParticleSystem. All modules are in fact for usage of PS only and you should change anything by directly modifying fields and properties in its reference.

Your ChangeParticleNum code should look like this (also added null-check for good practice):

      public void ChangeParticleNum( int num_particles)
      {
          if(ps == null)
              ps = GetComponent<ParticleSystem>();
          ps.emission.rateOverTime = num_particles;
      }
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

226 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

Related Questions

Having Player light torches Using Particle System and OnCollisionEnter? 1 Answer

Particle system only playing when visible 0 Answers

Spawn particles with Prefab name 0 Answers

Null Reference Exception Error 1 Answer

List remains null after initialisation? 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