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

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.