Realtime OnChanged event will not fire
Hey guys, I have a simple model, SceneModel, which has one integer property, amountOfSceneChanges. When this integer increments, I want the delegate to fire.
I have tried:
- Verifying the model is subscribed to the event on load, and even manually resubscribing right before the call
- Verifying that the model integer number is infact changing
- Recreating the model and modelsync classes (with different names) recompiling and using the new classes
- Changing room name
I have no idea why the delegate isn't firing given the above. Please let me know if you need more screenshots or info! thanks !
![No description](https://cdn.answeroverflow.com/1242718828404801566/image.png)
![No description](https://cdn.answeroverflow.com/1242718828660789258/image.png)
26 Replies
Hi @NeuroGoblin. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
----------------------
Based on the information provided in the knowledge sources, there are a few things you could check:
1. Change Event: In the RealtimeModel, there is an optional argument that specifies whether you would like a change event added to the model. When this is set to true, a C# event that will fire when a property is changed locally or remotely is added to the model by the model compiler. This is a useful signal to update your scene to match the model. Make sure this is set to true in your case. Source (https://normcore.io/documentation/room/realtimemodel#change-event)
2. Compilation Errors: Make sure your project has no compilation errors. If your project has any errors, any changes you make to the model will not be visible to the model editor. Source (https://normcore.io/documentation/room/common-questions#i-made-changes-to-my-properties-but-when-i-recompile-the-freshly-compiled-model-isnt-updated-why)
3. RealtimeComponent Syncing: If your custom RealtimeComponent isn't syncing and
OnRealtimeModelReplaced
doesn't get called, you might have added your custom component to a game object before it was converted to a RealtimeComponent subclass. To verify this, look at the RealtimeView's list of components and make sure you see your custom component in the list. If you don't see it, or a RealtimeView has not been created for you automatically, try removing the component and re-adding it to your game object. This will tell Unity to automatically create a RealtimeView and add your RealtimeComponent subclass to its component list. Source (https://normcore.io/documentation/realtime/synchronizing-custom-data#my-custom-realtimecomponent-isnt-syncing-and-onrealtimemodelreplaced-doesnt-get-called)
If you've checked all of these and the issue persists, it might be helpful to provide more information or screenshots for further troubleshooting.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@196555254496493568> kapa.ai is still learning and improving, please let us know how it did by reacting below
@Normcore Assistant I have tried all 3
Let me check the knowledge base for you. One moment! :books:
----------------------
I'm sorry to hear that you're still having trouble. Based on the information provided in the knowledge sources, here are a few more things you could try:
1. RealtimePropertyAttribute: Ensure that your
amountOfSceneChanges
property has the **RealtimeProperty]
attribute. This attribute is necessary for Normcore to recognize the property and synchronize it. [Source (https://normcore.io/documentation/reference/classes/RealtimePropertyAttribute)
2. PropertyID: The propertyID
field in the RealtimePropertyAttribute
is a unique identifier for each property. Make sure that each property in your model has a unique propertyID
. Source (https://normcore.io/documentation/reference/classes/RealtimePropertyAttribute)
3. Reliable: The reliable
field in the RealtimePropertyAttribute
determines whether changes to the property are sent reliably (if set to true
) or unreliably (if set to false
). If it's set to false
, changes might not always be sent. Try setting it to true
to see if that helps. Source** (https://normcore.io/documentation/reference/classes/RealtimePropertyAttribute)
If you've tried all of these and the issue persists, it might be a more complex issue that requires further troubleshooting. In that case, I would recommend reaching out to the Normcore support team for assistance.
----------------------
Note: you can ask me a follow up question by @ mentioning me again :speech_balloon:
----------------------<@196555254496493568> kapa.ai is still learning and improving, please let us know how it did by reacting below
That's very strange and should be working, the only pattern difference I see with my stuff is setting the local variable before the model one, typically I just set the local var in the model one, or just reference the model value directly in my code
But I realistically see no reason why this should be failing atm
hey, thanks for the reply, I tried directly changing the model as well (model.amount++) and same thing
also tried incrementing it by different amounts - in both cases the model is defs changing
![No description](https://cdn.answeroverflow.com/1242721744360308786/image.png)
Yeah honestly unsure :/
I would maybe see if some other very simple setup works in a different script, to make sure that the stuff is firing at all
Well
nvm, was gonna mention that you can't set a value to the same previous value and have it update, but it doesn't appear you are doing that ever
no, it should always increment - also it's odd because i literally created a whole new model and sync script and same thing
i remember having this issue when i was using booleans, it would only fire once then never again
An entirely new setup is having the same issue?
same scene / project, but new model (compiled manually) and new script referencing it
Seems like something else externally may be failing, I gotta brb, but try reimporting the Normcore package and checking to make sure the object in the scene is setup correctly, perhaps the RealtimeView is breaking or something?
So i switched the pre-release version (2.95) from the webGL alpha (as we were planning on doing anyway) and the issue persists
it does in fact fire a first time though?