Documentation index for AI agents (llms.txt) A Markdown version of every page is available: request the page's source under /docs/, follow the "alternate" link in this page's head, or start from /llms.txt.
Visual Script logo Manual

Instantiate#

Game Object / Creation / Instantiate

Description#

Creates a new instance of the template game object at the specified location

Parameters#

Name Description
Game Object The template game object that makes a copy
Position The position of the new game object
Rotation The orientation of the new game object
Parent An optional parent object of the new instance
Set An optional location where to save the new instance

Code#

using System;
using UnityEngine;
using VisualScript.Icons;

namespace VisualScript.Runtime
{
    [Title("Instantiate")]
    [Image(typeof(IconCubeSolid), ColorTheme.Type.TextLight)]
    
    [Description("Creates a new instance of the template game object at the specified location")]
    [Category("Game Object/Creation/Instantiate")]
    
    [Parameter("Game Object", "The template game object that makes a copy")]
    [Parameter("Position", "The position of the new game object")]
    [Parameter("Rotation", "The orientation of the new game object")]
    [Parameter("Parent", "An optional parent object of the new instance")]
    [Parameter("Set", "An optional location where to save the new instance")]
    
    [Keywords("Create", "New")]
    
    [Serializable]
    public class InstructionCoreGameObjectInstantiate : Instruction
    {
        [SerializeField] private GetGameObject m_GameObject = new GetGameObject(
            new TypeGameObjectPrefab()
        );

        [SerializeField] private GetVector3 m_Position = new GetVector3();
        [SerializeField] private GetQuaternion m_Rotation = new GetQuaternion();
        [SerializeField] private GetGameObject m_Parent = new GetGameObject();

        [SerializeField] private SetGameObject m_Set = new SetGameObject(
            new TypeGameObjectNoneSet()
        );

        protected override string GetTitle(GameObject source) => $"Instantiate {this.m_GameObject}";

        protected override Awaitable Run(Args args)
        {
            GameObject gameObject = this.m_GameObject.Get(args);
            if (gameObject == null) return Done;

            GameObject instance = UnityEngine.Object.Instantiate(
                gameObject,
                this.m_Position.Get(args),
                this.m_Rotation.Get(args),
                this.m_Parent.Get<Transform>(args)
            );

            if (instance != null)
            {
                this.m_Set.Set(instance, args);
            }
            
            return Done;
        }
    }
}
Visual Script logoVisual Script © Catsoft Works 2026. All rights reserved.