I just upgraded from 4.5.5 & 1.29 to 4.6.3 & 1.42c and I've lost all my Action data. Man I hate ScriptableObjects X(
(
Any suggestions? I've assigned my managers, so it's not that.
I presume the data is somewhere serialized and just hidden. How can I double-check that's the case?
Comments
First off, let's get new Actions working - we'll leave existing ones alone until then. Make sure your Actions Manager is correctly set up (and to be even safer, leave out custom actions for now). Then check that you can create a new Cutscene etc without problems. Once done, add in any custom actions by defining their folder in the Actions Manager.
Only once you're happy with that, move onto an existing Cutscene or ActionList asset. As it happens, I've been re-writing the relationship between the ActionList Editor and the Actions Manager, with the intent of making it much "safer". While I don't know the exact cause of this error in particular, I'm hoping that the changes 1.43 will bring will solve it. Still, let me know how far through these steps you get until errors appear, and we'll see what can be done about it.
Chris, I think I figured it out. You relied on title strings in ActionsManager. That makes an assumption that all Actions, including custom Actions that can be given any string name, are formatted a certain way, it seems at the very least with a colon. Not having one seems to break things.
I think the safe thing to do would be a find another way to categorize Actions. Alternatively I guess devs should follow a strict guideline for naming Actions that’s outlined in the manual?
I'm trying to get a build done with this big upgrade in the next day or two, do you recommend a good approach for patching this?
If you aren't familiar with parameters, they're a way of overriding an Action's values with a local instance at the time the ActionList is run (just like function parameters). Using this, you can create ActionLists that perform common tasks, but slightly varied each time, like adding an inventory item and increasing a score. The parameter in Engine: Pause game can be used to pause the game by a float of your choice, when the Action is run using the Engine: Run ActionList Action. You can read more about parameters here.
Re: Action naming
You're right about the need of a colon, and it's a good suggestion to change the way this works. I may make the category (i.e. before the colon) an Enum, so it's impossible to break. I've been doing a lot of work to the way Actions are called (it's been a long struggle to change things such that they can be renamed onced used), and the overriding concern is that nothing should break. As for patching, the "Upgrade notes" section at the top of each release's changelog is where anything you need to be aware of gets listed.
Re: Missing references
Am I to understand that only some of the fields in an Action are missing (i.e. it's not just completely reset)? It could be that it can no longer find the referenced objects - are you referring to scene- or asset-based Actions? Asset Actions actually reference the Constant ID number of an object, not the object itself, but this should automatically be assigned once an object is dragged onto the field.