Search Issue Tracker

Fixed in 5.0.X

Votes

0

Found in

5.0.0b18

Issue ID

660985

Regression

Yes

[ContextMenu]If a script is derived from a MonoBehaviour defined in an assembly, calling a [ContextMenu] function causes error

Scripting

-

Steps to reproduce this issue:

1. Open the attached project
2. Open 'test' scene
3. Select 'test' gameobject, it has 3 components
4. Click the context menu of each one:
-TestContextMenu logs properly ('bla')
-TestContextMenuInAssembly logs properly ('bla')
-TestContextMenuDerivedFromAssembly throws the error : "Failed to call function because it was null"

Regression since b9

Comments (1)

  1. hutchison-kim

    May 20, 2015 16:08

    I got this error using different repro steps:

    1. Declare a MonoBehavior class (MyClass).
    2. Declare a function (MyFunc) that has a ContextMenu attribute in class (MyClass).
    3. Declare a sub-class (MySubClass) that derives from the previously declared class (MyClass).
    4. Add a component of type subclass (MySubClass) to a GameObject.
    5. Right-Click on the component and run the function (MyFunc) from the context menu.
    6. Error: "Failed to call function because it was null".

    Steps to work around this issue:
    1. Declare a MonoBehavior class (MyClass).
    2. Declare a *virtual* function (MyFunc) that has a ContextMenu attribute in class (MyClass).
    3. Declare a sub-class (MySubClass) that derives from the previously declared class (MyClass).
    4. Declare a *override* function (MyFunc) for the previously declared virtual function.
    5. Add a component of type subclass (MySubClass) to a GameObject.
    6. Right-Click on the component and run the function (MyFunc) from the context menu.
    7. Success.

Add comment

Log in to post comment