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.8.4
>>> 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.core.MeshRenderer object at 0x0A929460>]
>>> 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(tagNumOrName)[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
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.GameObject(name='GameObject', parent=None)[source]

Bases: object

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
static 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 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.

Parameters:

componentClass (type) – Component to remove

Raises:
  • ComponentException – If the GameObject doesn’t have the specified component
  • ComponentException – If the specified component is a Transform
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(type=None, default=None)[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

None

Type:NoneType
class pyunity.core.ShowInInspector(type=None, default=None, name=None)[source]

Bases: pyunity.core.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.Component(transform, is_dummy=False)[source]

Bases: object

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 AddComponent on the component’s GameObject.

Parameters:component (Component) – Component to add. Must inherit from Component
GetComponent(component)[source]

Calls GetComponent on the component’s GameObject.

Parameters:componentClass (Component) – Component to get. Must inherit from Component
RemoveComponent(component)[source]

Calls RemoveComponent on the component’s GameObject.

Parameters:component (Component) – Component to remove. Must inherit from Component
GetComponents(component)[source]

Calls GetComponents on the component’s GameObject.

Parameters:componentClass (Component) – Component to get. Must inherit from Component
RemoveComponents(component)[source]

Calls RemoveComponents on the component’s GameObject.

Parameters:component (Component) – Component to remove. Must inherit from Component
scene

Get either the scene of the GameObject or the current running scene.

class pyunity.core.SingleComponent(transform, is_dummy=False)[source]

Bases: pyunity.core.Component

Represents a component that can be added only once.

class pyunity.core.Transform(transform=None)[source]

Bases: pyunity.core.SingleComponent

Class to hold data about a GameObject’s transformation.

gameObject

GameObject that the component belongs to.

Type:GameObject
localPosition

Position of the Transform in local space.

Type:Vector3
localRotation

Rotation of the Transform in local space.

Type:Quaternion
localScale

Scale of the Transform in local space.

Type:Vector3
parent

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
position

Position of the Transform in world space.

rotation

Rotation of the Transform in world space.

localEulerAngles

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

eulerAngles

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

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
class pyunity.core.LightType[source]

Bases: enum.IntEnum

An enumeration.

Point = 0
Directional = 1
Spot = 2
class pyunity.core.Light(transform, is_dummy=False)[source]

Bases: pyunity.core.SingleComponent

Component to hold data about the light in a scene.

intensity

Intensity of light

Type:int
color

Light color (will mix with material color)

Type:Color
type

Type of light (currently only Point and Directional are supported)

Type:LightType
type = 1
class pyunity.core.MeshRenderer(transform, is_dummy=False)[source]

Bases: pyunity.core.SingleComponent

Component to render a mesh at the position of a transform.

mesh

Mesh that the MeshRenderer will render.

Type:Mesh
mat

Material to use for the mesh

Type:Material
Render()[source]

Render the mesh that the MeshRenderer has.