Attention

You are viewing PyUnity docs under the develop branch. As such, they are only applicable if you installed from source. Go to https://docs.pyunity.x10.bz/en/latest/ for the most recent release.

pyunity.core module


Core classes for the PyUnity library.

This module has some key classes used throughout PyUnity, and have to be in the same file due to references both ways. Usually when you create a scene, you should never create Components directly, instead add them with AddComponent.

Example

To create a GameObject with 2 children, one of which has its own child, and all have MeshRenderers:

>>> from pyunity import * # Import
Loaded config
Trying GLFW as a window provider
GLFW doesn't work, trying PySDL2
Trying PySDL2 as a window provider
Using window provider PySDL2
Loaded PyUnity version 0.9.0
>>> mat = Material(RGB(255, 0, 0)) # Create a default material
>>> root = GameObject("Root") # Create a root GameObjects
>>> child1 = GameObject("Child1", root) # Create a child
>>> child1.transform.localPosition = Vector3(-2, 0, 0) # Move the child
>>> renderer = child1.AddComponent(MeshRenderer) # Add a renderer
>>> renderer.mat = mat # Add a material
>>> renderer.mesh = Mesh.cube(2) # Add a mesh
>>> child2 = GameObject("Child2", root) # Create another child
>>> renderer = child2.AddComponent(MeshRenderer) # Add a renderer
>>> renderer.mat = mat # Add a material
>>> renderer.mesh = Mesh.quad(1) # Add a mesh
>>> grandchild = GameObject("Grandchild", child2) # Add a grandchild
>>> grandchild.transform.localPosition = Vector3(0, 5, 0) # Move the grandchild
>>> renderer = grandchild.AddComponent(MeshRenderer) # Add a renderer
>>> renderer.mat = mat # Add a material
>>> renderer.mesh = Mesh.cube(3) # Add a mesh
>>> root.transform.List() # List all GameObjects
/Root
/Root/Child1
/Root/Child2
/Root/Child2/Grandchild
>>> child1.components # List child1's components
[<Transform position=Vector3(-2, 0, 0) rotation=Quaternion(1, 0, 0, 0) scale=Vector3(1, 1, 1) path='/Root/Child1'>, <pyunity.MeshRenderer object at 0x00000170E4199CF0>]
>>> child2.transform.children # List child2's children
[<Transform position=Vector3(0, 5, 0) rotation=Quaternion(1, 0, 0, 0) scale=Vector3(1, 1, 1) path='/Root/Child2/Grandchild'>]
class pyunity.core.Tag[source]

Bases: object

Class to group GameObjects together without referencing the tags.

Parameters

tagNumOrName (str or int) – Name or index of the tag

Raises
  • ValueError – If there is no tag name

  • IndexError – If there is no tag at the provided index

  • TypeError – If the argument is not a str or int

tagName

Tag name

Type

str

tag

Tag index of the list of tags

Type

int

tags = ['Default']

Type:    list

List of current tags

classmethod AddTag(name)[source]

Add a new tag to the tag list.

Parameters

name (str) – Name of the tag

Returns

The tag index

Return type

int

class pyunity.core.SavesProjectID[source]

Bases: object

class pyunity.core.GameObject[source]

Bases: SavesProjectID

Class to create a GameObject, which is an object with components.

Parameters
  • name (str, optional) – Name of GameObject

  • parent (GameObject or None) – Parent of GameObject

name

Name of the GameObject

Type

str

components

List of components

Type

list

tag

Tag that the GameObject has (defaults to tag 0 or Default)

Type

Tag

transform

Transform that belongs to the GameObject

Type

Transform

classmethod BareObject(name='GameObject')[source]

Create a bare GameObject with no components or attributes.

Parameters

name (str) – Name of the GameObject

AddComponent(componentClass)[source]

Adds a component to the GameObject. If it is a transform, set GameObject’s transform to it.

Parameters

componentClass (Component) – Component to add. Must inherit from Component

GetComponent(componentClass)[source]

Gets a component from the GameObject. Will return first match. For all matches, use GameObject.GetComponents().

Parameters

componentClass (Component) – Component to get. Must inherit from Component

Returns

The specified component, or None if the component is not found

Return type

Component or None

RemoveComponent(componentClass)[source]

Removes the first matching component from a GameObject. To remove all matching components, use GameObject.RemoveComponents().

Parameters

componentClass (type) – Component to remove

Raises
GetComponents(componentClass)[source]

Gets all matching components from the GameObject.

Parameters

componentClass (Component) – Component to get. Must inherit from Component

Returns

A list of all matching components

Return type

list

RemoveComponents(componentClass)[source]

Removes all matching component from a GameObject.

Parameters

componentClass (type) – Component to remove

Raises

ComponentException – If the specified component is a Transform

class pyunity.core.HideInInspector[source]

Bases: object

An attribute that should be saved when saving a project, but not shown in the Inspector of the PyUnityEditor.

type

Type of the variable

Type

type

default

Default value (will be set to the Behaviour)

Type

Any

name

Set when Component.__init_subclass__ is excecuted

Type

NoneType

class pyunity.core.ShowInInspector[source]

Bases: HideInInspector

An attribute that should be saved when saving a project, and shown in the Inspector of the PyUnityEditor.

type

Type of the variable

Type

type

default

Default value (will be set to the Behaviour)

Type

Any

name

Alternate name shown in the Inspector

Type

str

class pyunity.core.ComponentType[source]

Bases: ABCMeta

class pyunity.core.Component[source]

Bases: SavesProjectID

Base class for built-in components.

gameObject

GameObject that the component belongs to.

Type

GameObject

transform

Transform that the component belongs to.

Type

Transform

AddComponent(component)[source]

Calls GameObject.AddComponent() on the component’s GameObject.

Parameters

component (Component) – Component to add. Must inherit from Component

GetComponent(component)[source]

Calls GameObject.GetComponent() on the component’s GameObject.

Parameters

componentClass (Component) – Component to get. Must inherit from Component

RemoveComponent(component)[source]

Calls GameObject.RemoveComponent() on the component’s GameObject.

Parameters

component (Component) – Component to remove. Must inherit from Component

GetComponents(component)[source]

Calls GameObject.GetComponents() on the component’s GameObject.

Parameters

componentClass (Component) – Component to get. Must inherit from Component

RemoveComponents(component)[source]

Calls GameObject.RemoveComponents() on the component’s GameObject.

Parameters

component (Component) – Component to remove. Must inherit from Component

property scene

Get the scene of the GameObject.

class pyunity.core.SingleComponent[source]

Bases: Component

Represents a component that can be added only once.

class pyunity.core.Transform[source]

Bases: SingleComponent

Class to hold data about a GameObject’s transformation.

gameObject

GameObject that the component belongs to.

Type

GameObject

localPosition = None

Position of the Transform in local space.

Type

Vector3

localRotation = None

Rotation of the Transform in local space.

Type

Quaternion

localScale = None

Scale of the Transform in local space.

Type

Vector3

parent = None

Parent of the Transform. The hierarchical tree is actually formed by the Transform, not the GameObject. Do not modify this attribute.

Type

Transform or None

children

List of children

Type

list

property position

Position of the Transform in world space.

property rotation

Rotation of the Transform in world space.

property localEulerAngles

Rotation of the Transform in local space. It is measured in degrees around x, y, and z.

property eulerAngles

Rotation of the Transform in world space. It is measured in degrees around x, y, and z.

property scale

Scale of the Transform in world space.

ReparentTo(parent)[source]

Reparent a Transform.

Parameters

parent (Transform) – The parent to reparent to.

List()[source]

Prints the Transform’s full path from the root, then lists the children in alphabetical order. This results in a nice list of all GameObjects.

GetDescendants()[source]

Iterate through all descedants of this Transform.

FullPath()[source]

Gets the full path of the Transform.

Returns

The full path of the Transform.

Return type

str

LookAtTransform(transform)[source]

Face towards another transform’s position.

Parameters

transform (Transform) – Transform to face towards

Notes

The rotation generated may not be upright, and to fix this just use transform.rotation.eulerAngles *= Vector3(1, 1, 0) which will remove the Z component of the Euler angles.

LookAtGameObject(gameObject)[source]

Face towards another GameObject’s position. See Transform.LookAtTransform() for details.

Parameters

gameObject (GameObject) – GameObject to face towards

LookAtPoint(vec)[source]

Face towards a point. See Transform.LookAtTransform() for details.

Parameters

vec (Vector3) – Point to face towards

LookInDirection(vec)[source]

Face in a vector direction (from origin to point). See Transform.LookAtTransform() for details.

Parameters

vec (Vector3) – Direction to face in