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 Pygame
Trying Pygame as a window provider
Using window provider Pygame
Loaded PyUnity version 0.2.0
>>> mat = Material((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(2, 2, 2) path="/Root/Child1">, <pyunity.core.MeshRenderer object at 0x0B14FCB8>]
>>> child2.transform.children # List child2's children
[<Transform position=Vector3(0, 5, 0) rotation=Quaternion(1, 0, 0, 0) scale=Vector3(3, 3, 3) path="/Root/Child2/Grandchild">]
class pyunity.core.Behaviour[source]

Bases: pyunity.core.Component

Base class for behaviours that can be scripted.

gameObject

GameObject that the component belongs to.

Type

GameObject

transform

Transform that the component belongs to.

Type

Transform

Start()[source]

Called every time a scene is loaded up.

Update(dt)[source]

Called every frame.

Parameters

dt (float) – Time since last frame, sent by the scene that the Behaviour is in.

class pyunity.core.Camera[source]

Bases: pyunity.core.Component

Component to hold data about the camera in a scene.

fov

Fov in degrees measured horizontally. Defaults to 90.

Type

int

near

Distance of the near plane in the camera frustrum. Defaults to 0.05.

Type

float

far

Distance of the far plane in the camera frustrum. Defaults to 100.

Type

float

clearColor

Tuple of 4 floats of the clear color of the camera. Defaults to (.1, .1, .1, 1). Color mode is RGBA.

Type

tuple

class pyunity.core.Component[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

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

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, do a manual loop.

Parameters

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

class pyunity.core.Light[source]

Bases: pyunity.core.Component

Component to hold data about the light in a scene.

class pyunity.core.Material(color)[source]

Bases: object

Class to hold data on a material.

color

A list or tuple of 4 floats that make up a RGBA color.

Type

list or tuple

class pyunity.core.MeshRenderer[source]

Bases: pyunity.core.Component

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.

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

static 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.Transform[source]

Bases: pyunity.core.Component

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.

Type

Transform or None

children

List of children

Type

list

FullPath()[source]

Gets the full path of the Transform.

Returns

The full path of the Transform.

Return type

str

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.

ReparentTo(parent)[source]

Reparent a Transform.

Parameters

parent (Transform) – The parent to reparent to.

property eulerAngles

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

property localEulerAngles

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

property position

Position of the Transform in world space.

property rotation

Rotation of the Transform in world space.

property scale

Scale of the Transform in world space.

pyunity.core.tags = ['Default']

List of current tags