Hi,
It's not easy. Think of the IDs as internal values, kind of like GUIDs that Unity assigns to asset files in a Unity project. If you change an asset's GUID, you need to open all scenes and prefabs that reference the asset and update the reference.
Why do you need the IDs in a specific order? Maybe I can suggest a different approach.
If you really need the IDs in a specific order, you can do the following. Let's say your actors are:
- (1) Player
- (2) Bob
- (3) Adam
And your conversation involves the Player and Bob. Internally, the conversation involves actor IDs 1 & 2. Inspect the conversation's properties (click on empty canvas area), and change the conversant to Adam. Now internally the conversation involves actor IDs 1 & 3. Repeat for all conversations that involve Bob.
Then go to the Actors tab. Rename Bob to Adam, and rename Adam to Bob. So your actors will be:
- (1) Player
- (2) Adam
- (3) Bob
Since your conversation involves actor IDs 1 & 3, it will now involve Player and Bob again.
You could also process the dialogue database asset in a custom script. It's just a ScriptableObject. Let's use the example above, where Bob=2 and Adam=3. You could loop through all conversations and all dialogue entries, and replace all references to ActorID=2 with a temporary value such as -1. Then loop through again replace all ActorID=3 with 2. Finally loop through one more time and replace all ActorID=-1 with 3.
In either case, make a backup of your database before doing any of this.
Then again, if you don't mind describing what your requirements are, maybe there's an easier solution than swapping IDs.