Search Issue Tracker

Fixed in 2021.1.X

Fixed in 2020.3.X



Found in




Issue ID




Unity doesn't recognise the script as Monobehaviour script when there's a grave accent in an #if false block inside a namespace



How to reproduce:
1. Open the attached "ScriptBreakingUnity" project
2. In the Project window select the "breakit" script
3. Open the Inspector (Window->General->Inspector)

Expected results: There's no "No MonoBehaviour scripts in the file, or their names do not match the file name." message
Actual results: There's a "No MonoBehaviour scripts in the file, or their names do not match the file name." message

Reproducible with: 2020.1.0a7, 2020.1.6f1, 2020.2.0b3
Not reproducible with: 2018.4.27f1, 2019.4.11f1, 2020.1.0a6

- 2020.1.0a7 is the first version where the issue appears when creating a new project (not upgrading/downgrading)
- Upgrading a project with the script up to Unity 2020.1.0a14 will not reproduce the issue if it wasn't there initially
- When downgrading a project that has the issue to Unity 2020.1.0a2 or later will keep the issue around but resetting packages sometimes fixes it
- If the #if block with the grave accent is not inside a namespace Unity will not throw any errors and will recognise the script as MonoBehaviour
- If the #if block is set to true, the Console will throw the "Unexpected character" error and the Editor will accept the script as MonoBehaviour script

  1. Resolution Note (fix version 2021.1):

    Fixed in 2021.1.0a2

  2. Resolution Note (fix version 2020.3):

    Fixed in Unity 2020.3.27f1

Comments (2)

  1. weber-jaroslaw-dmm

    Jan 06, 2022 03:52

    still happens in unity 2020 LTS

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.