Upgrade to 2.2.5 failed

Hi,

Well I have upgraded UIS on the latest version 1.0.5 and I am trying to upgrade Third Person Controller but I get 22 errors. It seems that the import is OK but I continue to see version 2.2.4 when I launch UCC menu as shown in this screenshot:

Error Import Third Person Controller 2.2.5.png

When I try a reimport, the pop-up is still empty! Same thing through package manager.

Through the project as showned in this screenshot, I get the popup after importing the issue is the same, I have always the version 2.2.4.
Error Import Third Person Controller 2.2.5_2.png

By the way, I have updated also the integration UIS that I got in download packe of UCC.

Any ideas how I can fix this issue?
 
I have rolled back my changes and I redo with the installer accessible through the opsive menu:
Use installer in menu instead.png

Use installer in menu instead 2.png

And I get the version 2.2.5 correctly! But...

Third Person Controller version 2.2.5 OK.png

... But after import UIS onversion 1.0.5 I have still version 1.0.3 and same thing I cannot import it correctly!
 
After restarting Unity, the versions of both UUC and UIS are corrects: 2.2.5 and 1.0.5

I have also a warning message:
Overriding existing asset with new GUID from package, this may break links within your project to package assets (Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Demo/Database/CharacterEquipItemAction.asset)

And always the same error messages:
Assets\Game\Inventory\Scripts\ItemActions\ConsumeItemAction.cs(24,33): error CS0115: 'ConsumeItemAction.CanInvokeInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Game\Inventory\Scripts\ItemActions\ConsumeItemAction.cs(40,33): error CS0115: 'ConsumeItemAction.InvokeActionInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Game\Inventory\Scripts\ItemActions\ConsumeItemAction.cs(12,18): error CS0534: 'ConsumeItemAction' does not implement inherited abstract member 'ItemAction.CanInvokeInternal(ItemInfo, ItemUser)'

Assets\Game\Inventory\Scripts\ItemActions\ConsumeItemAction.cs(12,18): error CS0534: 'ConsumeItemAction' does not implement inherited abstract member 'ItemAction.InvokeActionInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ItemDropItemAction.cs(36,33): error CS0115: 'ItemDropItemAction.CanInvokeInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ItemDropItemAction.cs(51,33): error CS0115: 'ItemDropItemAction.InvokeActionInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ItemDropItemAction.cs(20,18): error CS0534: 'ItemDropItemAction' does not implement inherited abstract member 'ItemAction.CanInvokeInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ItemDropItemAction.cs(20,18): error CS0534: 'ItemDropItemAction' does not implement inherited abstract member 'ItemAction.InvokeActionInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\QuantityItemDropItemAction.cs(36,33): error CS0115: 'QuantityItemDropItemAction.CanInvokeInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\QuantityItemDropItemAction.cs(52,33): error CS0115: 'QuantityItemDropItemAction.InvokeActionInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\QuantityItemDropItemAction.cs(68,33): error CS0115: 'QuantityItemDropItemAction.SetupQuantityPickerSettings(ItemInfo, IItemUser, QuantityPickerPanel)': no suitable method found to override


Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\QuantityItemDropItemAction.cs(80,33): error CS0115: 'QuantityItemDropItemAction.InvokeWithAwaitedValue(ItemInfo, IItemUser, int)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\QuantityItemDropItemAction.cs(20,18): error CS0534: 'QuantityItemDropItemAction' does not implement inherited abstract member 'ItemAction.CanInvokeInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\QuantityItemDropItemAction.cs(20,18): error CS0534: 'QuantityItemDropItemAction' does not implement inherited abstract member 'ItemActionWithQuantityPickerPanel.InvokeWithAwaitedValue(ItemInfo, ItemUser, int)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ModifyCharacterAttributeItemAction.cs(45,33): error CS0115: 'ModifyCharacterAttributeItemAction.CanInvokeInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ModifyCharacterAttributeItemAction.cs(65,33): error CS0115: 'ModifyCharacterAttributeItemAction.InvokeActionInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ModifyCharacterAttributeItemAction.cs(20,18): error CS0534: 'ModifyCharacterAttributeItemAction' does not implement inherited abstract member 'ItemAction.CanInvokeInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\ModifyCharacterAttributeItemAction.cs(20,18): error CS0534: 'ModifyCharacterAttributeItemAction' does not implement inherited abstract member 'ItemAction.InvokeActionInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\EquipUnequipItemAction.cs(37,33): error CS0115: 'EquipUnequipItemAction.CanInvokeInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\EquipUnequipItemAction.cs(62,33): error CS0115: 'EquipUnequipItemAction.InvokeActionInternal(ItemInfo, IItemUser)': no suitable method found to override

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\EquipUnequipItemAction.cs(22,18): error CS0534: 'EquipUnequipItemAction' does not implement inherited abstract member 'ItemAction.CanInvokeInternal(ItemInfo, ItemUser)'

Assets\Opsive\UltimateCharacterController\Integrations\UltimateInventorySystem\Scripts\EquipUnequipItemAction.cs(22,18): error CS0534: 'EquipUnequipItemAction' does not implement inherited abstract member 'ItemAction.InvokeActionInternal(ItemInfo, ItemUser)'
 
Last edited:
Of course, I didn't precise that I had imported integration package after importing these 2 new versions.

I didn't find those scripts above in the new integration package, then I suppose that they have been deleted or substituted by new ones.

What is the replacement scripts for the following scripts, I guess:
  • ItemDropItemAction.cs --> CharacterDropItemAction.cs
  • QuantityItemDropItemAction.cs --> CharacterQuantityDropItemAction.cs
  • ModifyCharacterAttributeItemAction.cs --> CharacterModifyAttributeItemAction.cs
  • EquipUnequipItemAction .cs --> CharacterEquipUnequipItemAction.cs
So actions scripts have evolved or just been renamed.

Glancing in the integration demo scene, I saw in the CategoryItemActionSet those changes:
  • For Healing: CharacterModifyAttributeItemAction
  • ...etc.

When I play the integration demo scene, I have an issue with actions in inventory. It seems broken. It is only my case or there is an issue in demo ?

Demo actions broken.png
 
It looks like you have a mismatch of versions installed. To ensure you have the latest I would first test it in a new project. You can then remove the Opsive folder in your existing project (assuming you didn't store any of your own assets in that folder) and then manually move the folders.
 
Many of the errors you was because we renamed some scripts (which you did notice correctly). People were complaining that it was not clear which actions were for the integration and which one were for only UIS without UCC.

So I would recommed removing the integration folder before reimporting. I'm sure I mentioned that this should be done, but I might have put it somewhere not obvious.

As for some errors, they reference a script in your own project:
Code:
Assets\Game\Inventory\Scripts\ItemActions\ConsumeItemAction.cs

You can easily fixed this by changing the IItemUser to ItemUser type. ItemUser is now acomponent instead of an interface
 
I was afraid to lost references in my own scene and have to reassign those references. Well as I am stuck I will remove as proposed and see if is worked correctly.
 
As long as you keep the same metadata IDs you won't lose references. All of the updates have the same GUIDs so you should be good to go from the Opsive side of things. Obviously make sure you have a backup before making any of those major changes though.
 
OK thanks for this precision.

I have removed Opsive folder as you proposed and it is working fine now!

Thank you for your help.

.... I need to fix now the issue I have in my own scene. Before asking something else about this, I will take a moment to analyse before disturbing you again!
 
By the way, one more thing, in the integration demo scene, it is seems that the arms of characters are not correctly setup because we get this known weird position of the arms
 
@LittleGrassHopper I was playing with the integration demo this morning and didn't see any problems with the arms.
Which character controller are you using? Was it first person arms or third person?
Could you describe in more detail what the problem is in another thread, and maybe show a video/screenshot?
 
@LittleGrassHopper I was playing with the integration demo this morning and didn't see any problems with the arms.
Which character controller are you using? Was it first person arms or third person?
Could you describe in more detail what the problem is in another thread, and maybe show a video/screenshot?

Well I will have a look again and try to show you from a video. It is the demo scene not in my scene
 
I have an issue with actions in inventory, the same that you can see above (it was on demo scene and have been solved by reinstalling all) but now it appears in my scene:

NullReferenceException: Object reference not set to an instance of an object
Opsive.UltimateCharacterController.Integrations.UltimateInventorySystem.CharacterEquipUnequipItemAction.CanInvokeInternal (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, Opsive.UltimateInventorySystem.ItemActions.ItemUser itemUser) (at Assets/Opsive/UltimateCharacterController/Integrations/UltimateInventorySystem/Scripts/CharacterEquipUnequipItemAction.cs:47)
Opsive.UltimateInventorySystem.ItemActions.ItemAction.CanInvokeInternal () (at Assets/Opsive/UltimateInventorySystem/Scripts/ItemActions/ItemAction.cs:41)
Opsive.UltimateInventorySystem.ItemActions.ActionElement.CanInvoke () (at Assets/Opsive/UltimateInventorySystem/Scripts/ItemActions/ActionElement.cs:63)
Opsive.UltimateInventorySystem.UI.BoxDisplay.ItemGrid.ActionPanel`1[T].OpenInternal () (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/BoxDisplay/ItemGrid/ActionPanel.cs:76)
Opsive.UltimateInventorySystem.UI.Panels.DisplayPanel.Open (Opsive.UltimateInventorySystem.UI.Panels.DisplayPanel previousPanel, UnityEngine.UI.Selectable previousSelectable, System.Boolean selectDefault) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/Panels/DisplayPanel.cs:132)
Opsive.UltimateInventorySystem.UI.BoxDisplay.ItemGrid.InventoryGrid.OpenItemAction (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Int32 index) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/BoxDisplay/ItemGrid/InventoryGrid.cs:306)
Opsive.UltimateInventorySystem.UI.BoxDisplay.ItemGrid.InventoryGrid.ItemClick (Opsive.UltimateInventorySystem.Core.DataStructures.ItemInfo itemInfo, System.Int32 index) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/BoxDisplay/ItemGrid/InventoryGrid.cs:263)
Opsive.UltimateInventorySystem.UI.BoxDisplay.GridGeneric`1[T].BoxClicked (System.Int32 index) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/BoxDisplay/GridGeneric.cs:105)
Opsive.UltimateInventorySystem.UI.BoxDisplay.GridEventSystem.ClickedButton (System.Int32 index) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/BoxDisplay/GridEventSystem.cs:106)
Opsive.UltimateInventorySystem.UI.BoxDisplay.GridEventSystem+<>c__DisplayClass24_0.<Initialize>b__0 () (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/BoxDisplay/GridEventSystem.cs:60)
Opsive.UltimateInventorySystem.UI.Interactables.ActionButton.Press () (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/Interactables/ActionButton.cs:45)
Opsive.UltimateInventorySystem.UI.Interactables.ActionButton.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Assets/Opsive/UltimateInventorySystem/Scripts/UI/Interactables/ActionButton.cs:87)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/Program Files/Unity/Hub/Editor/2019.4.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/Program Files/Unity/Hub/Editor/2019.4.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update() (at C:/Program Files/Unity/Hub/Editor/2019.4.9f1/Editor/Data/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:377)

I have a category item actions for equiping called EquipableItemAction defined like so:
CharacterEquipUnequipItemAction.png

I have had, before upgrading to new versions, the same but with old naming.

In my character gameObject, I have changed nothing, it seems ok like the demo setup as you can see here:
Ability Equip Unequip.png

I cannot see what I am missing here, what is this null reference exception?
 
Last edited:
@LittleGrassHopper I think you are missing an ItemUser component on your character.

ItemUser is a new component that allows you to specify who is using the item. Such that you can use items which are not necessarily in your inventory. It's also very useful in local multiplayer settings where multiple characters can use the items from a shared inventory.

By default the system will find and use the item user next to the inventory.
 
Top