Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

49 Commits

Repository files navigation

Unity-PythonNet

Development Environment

What is this?

This is a sample project that integrates Unity and Python.NET. Pressing the Plot button will display an image of a graph drawn using matplotlib in Python.

Project Structure

+ Assets/
+ Scenes/
+ SampleScene.unity : Main scene using Unity UI
+ MainView.unity : Main scene uning UI Toolkit
+ Scripts/
+ PythonLifeCycle.cs : Python.NET initializer
+ PlotRandom.cs : Call python script from C# using Python.NET for Unity UI
+ UIEventHandler.cs : Call python script from C# using Python.NET for UI Toolkit
+ Plugins/
+ Microsoft.CSharp.dll : Need for .NET Standard 2.1
+ StreamingAssets/
+ python-3.11.3-embed-amd64/ : python runtime
+ myproject/
+ plot_random.py : python script for graph plot
+ requirements.txt : a list of items to be installed using pip install

How to add python packages

cd Assets\StreamingAssets\python-3.11.3-embed-amd64\
.\Scripts\pip.exe install matplotlib
.\Scripts\pip.exe freeze > myproject\requirements.txt

Editor Settings: Enter Play Mode Options

Both Domain Reload enabled and disabled are supported with fast Play/Stop.

Domain Reload Enabled

ProsCons
Fast Play mode stopSlightly slower Play mode start
Python code changes are reflected-
Clean Python state on each Play-

Domain Reload Disabled

ProsCons
Fast Play mode startPython global state is preserved
Fast Play mode stop-
Python code changes are reflected (via module reload)-

Settings: Edit → Project Settings → Editor → Enter Play Mode Options

Known Issues

  • PythonEngine.PythonPath is not applied when changing a different PythonEngine.PythonPath after calling PythonEngine.Initialize() / PythonEngine.Shutdown().
    • Restart Unity if you want to set a different PythonEngine.PythonPath.

Used by

Contributors

Languages