Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We are updating our Terms of Service for all Unity subscription plans, effective October 13, 2022, to create a more streamlined, user-friendly set of terms. Please review them here: unity.com/legal/terms-of-service.
    Dismiss Notice
  3. Have a look at our Games Focus blog post series which will show what Unity is doing for all game developers – now, next year, and in the future.
    Dismiss Notice

How to get GameObject's script component in python file

Discussion in 'Scripting' started by unity_KMYExUC9a3rXoA, Jul 5, 2021.

  1. unity_KMYExUC9a3rXoA

    unity_KMYExUC9a3rXoA

    Joined:
    Mar 13, 2020
    Posts:
    2
    Hi,

    I just download python for unity 4.0.0-exp.5 package, and try to send a list of int to Python so it can be calculated by using numpy in Python.

    When I tried to get the script component under the game object named "main", I got an error said

    PythonException: NameError : name 'Main' is not defined
    [' File "<string>", line 6, in <module>/n'] at Python.Runtime.PythonException.ThrowIfIsNull (Python.Runtime.BorrowedReference reference) (at <5dde01e97c6f480082d83366ee8e86a6>:0)
    Python.Runtime.PyScope.Exec (System.String code, System.IntPtr _globals, System.IntPtr _locals) (at <5dde01e97c6f480082d83366ee8e86a6>:0)
    Python.Runtime.PyScope.Exec (System.String code, Python.Runtime.PyDict locals) (at <5dde01e97c6f480082d83366ee8e86a6>:0)
    UnityEditor.Scripting.Python.PythonRunner.RunString (System.String pythonCodeToExecute, System.String scopeName) (at Library/PackageCache/com.unity.scripting.python@4.0.0-exp.5/Editor/PythonRunner.cs:155)

    The "Main" is the script file attached under the game object "main" like below:
    upload_2021-7-5_19-10-20.png

    This is my code in Python Script Editor:
    Code (Python):
    1. import UnityEngine
    2. import System
    3.  
    4. main = UnityEngine.GameObject.Find("main")
    5.  
    6. l = main.GetComponent<Main>().test()
    7.  
    8.  
    The test() is a function under Main which will return a list{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} simply.

    Can anyone tell me how to define the script so I can recieve the list under this script?
     
    Mile88 likes this.
  2. Mile88

    Mile88

    Joined:
    Apr 17, 2017
    Posts:
    2
    It should be in your case
    l = main.GetComponent("Main").test()
     
unityunity