Roblox para desenvolvedores Unity

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Esta página contém informações para ajudar desenvolvedores Unity experientes a começarem com Roblox, incluindo uma orientação básica, uma comparação conceitual e principais diferenças entre as duas plataformas.

Orientação

A interface do usuário do Unity com marcações para mostrar as várias janelas e painéis. A interface do usuário do Roblox Studio com marcações para mostrar as várias janelas e painéis.

A janela de Hierarquia do Unity e o Explorer do Roblox Studio são as principais janelas para organizar elementos em cenas 3D:

  • Ambos permitem gerenciar e organizar objetos (por exemplo, personagens e ativos ambientais).
  • Ambos utilizam uma estrutura em árvore para as relações pai-filho entre objetos.

No entanto, a janela de Hierarquia não possui uma estrutura predefinida, enquanto a janela de Explorer tem uma estrutura estrita. Pode ajudar pensar na janela de Explorer como uma combinação das janelas Hierarquia e Projeto do Unity, com a pasta Workspace como o elemento mais reconhecível.

Da mesma forma, o Gerenciador de Ativos do Roblox Studio e a Caixa de Ferramentas se sobrepõem à janela Projeto do Unity. O Gerenciador de Ativos permite que você gerencie todos os ativos dentro do seu jogo, enquanto a Caixa de Ferramentas permite acessar quaisquer ativos que você tenha publicado. A Caixa de Ferramentas também permite que você pesquise no Creator Store por ativos do Roblox ou da comunidade, assim como a Asset Store do Unity.

Diferenças filosóficas

Roblox é um "motor de simulação" em vez de um motor de jogo tradicional. GameObjects do Unity e Parts do Roblox servem como os blocos de construção fundamentais para criar objetos em um ambiente 3D, mas na prática, os dois são bastante diferentes:

  • Representação: GameObjects no Unity são um conceito de nível superior para qualquer objeto em uma cena, enquanto Parts no Roblox são projetados para representar objetos físicos, como blocos de madeira e esferas de plástico, em vez de geometria abstrata como objetos primitivos no Unity.
  • Física: Para realizar simulações físicas no Unity, você anexa componentes como Rigidbody e Collider a um GameObject. No Roblox, a física está integrada ao tipo de dado Parts; o motor lida com interações automaticamente.

Você pode ver a diferença imediatamente se criar um GameObject e um Part. O GameObject não tem mais nada além de uma posição, rotação e escala. O Part tem essas mesmas informações — além de um material e cor, valores para refletância e transparência, massa e forma, e muito mais. Transformar um Part em algo mais parecido com um GameObject vazio significa remover muitas propriedades integradas. Por outro lado, você pode fazer um GameObject parecer muito como um Part adicionando componentes como MeshFilter, MeshRenderer, Collider e Rigidbody a ele.

De uma perspectiva de script, GameObject é mais semelhante à Instance do Roblox, a classe base para todas as outras classes do Roblox, mas como você não pode (e não deve) criar objetos do tipo Instance, a comparação não é especialmente prática.

Outra comparação é do GameObject do Unity com o Model do Roblox. Modelos atuam como um contêiner para uma coleção de partes interconectadas da mesma forma que você poderia estabelecer uma relação pai-filho entre muitos GameObjects no Unity. Você especifica uma das partes do modelo como sua parte primária para definir o ponto de pivô. Modelos também contêm scripts, animações, efeitos sonoros, prompts, restrições, emissores de partículas e mais.

Por exemplo, um GameObject do Unity pode ter componentes para ParticleSystem, Physics3D, SpringConstraint e um script. Na janela de Hierarquia, você vê um único GameObject chamado SpringyFireball. A janela do Inspector mostra a coleção de componentes e propriedades.

No Roblox, um modelo SpringyFireball comparável na janela de Explorer pode parecer algo como isto:


Model
|- ParticleEmitter
|- MeshPart
|- SpringConstraint
|- ClickDetector
| |- Script

A filosofia de física padrão do Roblox se estende ao processo de construção de modelos 3D. No Roblox, unir várias partes em uma montagem é uma ótima maneira de construir rapidamente coisas, porque o Roblox trata as partes unidas como um único corpo rígido. Essa abordagem não está disponível no Unity.

Em vez de usar unidades métricas padrão para comprimento e massa, o Roblox usa unidades notacionais chamadas studs e Unidades de Massa Roblox (RMUs). Para conversões métricas aproximadas e recomendações sobre uso, veja Unidades.

A localização importa

Os jogos Roblox são multiplayer por padrão, então o Roblox Studio inclui muitos locais de armazenamento diferentes com comportamentos específicos. Para mais informações, veja runtime cliente-servidor e organização de objetos.

LocationDescription
WorkspaceRepresenta o mundo 3D da experiência. Esta localização funciona bem para scripts de servidor que se conectam diretamente a objetos e controlam seu comportamento.
ReplicatedFirstContém objetos que se replicam para o cliente antes de qualquer outra coisa. Esta localização é ideal para o conjunto mínimo absoluto de objetos e scripts de cliente necessários para exibir uma tela de carregamento.
ReplicatedStorageContém objetos que são replicados tanto para o cliente quanto para o servidor. Esta localização é ideal para ModuleScripts que você deseja usar tanto no servidor quanto no cliente. LocalScripts não são executados a partir desta localização, mas Scripts com um RunContext de Client são.
ServerScriptServiceContém scripts de servidor. Esta localização é ideal para scripts que precisam acessar funcionalidades ou objetos do lado do servidor, como lógica de jogo e armazenamento em nuvem.
ServerStorageContém objetos do lado do servidor. Esta localização é ideal para objetos grandes que não precisam ser replicados imediatamente para os clientes quando eles entram em uma experiência. Scripts não são executados a partir desta localização, mas você pode armazenar ModuleScripts do lado do servidor aqui.
StarterPlayerStarterCharacterScriptsContém LocalScripts que são executados quando o personagem gera.
StarterPlayerStarterPlayerScriptsContém LocalScripts de uso geral que são executados quando o jogador entra na experiência.
StarterGuiContém elementos da GUI que o cliente exibe ao carregar a experiência. LocalScripts podem ser executados a partir desta localização. Esta localização é ideal para scripts que modificam a interface do usuário da experiência, como adicionar botões, menus e pop-ups.
StarterPackGeralmente contém apenas Tools, mas também pode incluir LocalScripts para configurar mochilas de jogadores.

Scripting

As experiências Roblox suportam três tipos diferentes de scripts Luau:

  • Scripts do cliente

    Esses scripts são executados no cliente, e o servidor não tem visibilidade sobre seu comportamento. Por razões de compatibilidade, esses scripts podem assumir a forma de LocalScripts ou Scripts com um valor de RunContext de Client. Scripts do cliente geralmente estão localizados em ReplicatedStorage, StarterPlayerScripts ou StarterCharacterScripts.

  • Scripts do servidor

    Esses scripts são executados no servidor, e o cliente não tem visibilidade sobre seu comportamento. Scripts do servidor têm um valor de RunContext de Server e geralmente estão localizados em ServerScriptService, cujo conteúdo não é replicado para o cliente.

  • Scripts de módulo

    Esses scripts são peças reutilizáveis de código que retornam exatamente um valor, tipicamente uma função ou tabela (ou uma tabela de funções). Em vez de duplicar código em scripts do cliente e do servidor, utilize scripts de módulo para compartilhar código e dados entre os dois. Scripts de módulo frequentemente estão localizados em ReplicatedStorage, mas podem estar em outros lugares se você quiser compartilhar código entre scripts no mesmo lado da fronteira cliente-servidor.

O Unity não possui o conceito de diferentes tipos de script. Se você optar por fazer um jogo multiplayer, o Unity usa suas bibliotecas de rede para indicar quando um GameObject (e seus scripts) deve ser exclusivo do servidor.

No Unity, grande parte da funcionalidade do motor está disponível através dos métodos de MonoBehaviour. Por exemplo, para executar código antes do loop de renderização, você adiciona código ao método Update(). Para lidar com eventos de colisão física, você adiciona código ao método OnCollideEnter().

Os scripts do Roblox são mais orientados a eventos. Você acessa uma funcionalidade semelhante assinando serviços e ouvindo atualizações.

C# e Luau

Para scripting, o Unity usa C#. O Roblox usa Luau, uma linguagem de script derivada do Lua 5.1.

Em comparação com C#, Luau é tipado de forma gradual e geralmente tem uma sintaxe menos verbosa. Em projetos maiores, no entanto, a tipagem gradual pode introduzir categorias de erros que linguagens fortemente tipadas como C# evitam, então considere habilitar verificação de tipos estrita em scripts do Roblox.

Para as diferenças básicas de sintaxe entre as linguagens de script, veja Comparação entre Luau e C#.

Exemplo de código Luau

O seguinte exemplo de código Luau demonstra como, após um jogador equipar uma vara de pescar, escutar a entrada do usuário (neste caso, a tecla E) e chamar funções adicionais:


local ContextActionService = game:GetService("ContextActionService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- Obter um script de módulo do ReplicatedStorage que retorna uma única função
local performSomeAction = require(ReplicatedStorage.performSomeAction)
-- Supõe que este script é um filho da vara de pescar
local fishingPole = script.Parent
local ACTION_CAST = "Lançar"
-- Verifica se a tecla está pressionada e, em seguida, chama outra função
local function castLine(_actionName, inputState, _inputObject)
if inputState == Enum.UserInputState.Begin then
performSomeAction()
end
end
-- Habilita a ação apenas quando o jogador equipa a vara de pescar
fishingPole.Equipped:Connect(function()
ContextActionService:BindAction(ACTION_CAST, castLine, true, Enum.KeyCode.E)
end)
-- Desabilita a ação quando o jogador des equipa a vara de pescar
fishingPole.Unequipped:Connect(function()
ContextActionService:UnbindAction(ACTION_CAST)
end)

O script do Roblox pode ser relativamente conciso porque o Roblox tem muitas suposições integradas: um Player com um personagem Humanoid conectado ao servidor e pode equipar Tools. Essas suposições não existem no Unity, então a implementação seria muito diferente.

Ativos

Unity e Roblox ambos suportam a importação de malhas e modelos personalizados no formato .fbx. Certos tipos de ativos podem exigir configurações e opções de exportação específicas do seu software de modelagem de terceiros. Para mais informações, veja as seguintes páginas:

No Unity, objetos são importados para o seu diretório Assets, visíveis na janela Projeto. No Roblox, os ativos são importados para o seu Workspace e na Caixa de Ferramentas ou no Gerenciador de Ativos.

O Roblox também oferece um plugin do Blender de código aberto para simplificar o processo de importação.

Transforms

As transformações de Unity e CFrames do Roblox servem a propósitos semelhantes na representação de transformações 3D de objetos:

  • Tanto as transformações quanto CFrames representam a posição e a rotação de um objeto no espaço 3D. As transformações incluem escala, enquanto o Roblox usa uma propriedade BasePart.Size que não faz parte do CFrame.
  • Ambos suportam multiplicação para transformações complexas e possuem métodos embutidos para outras manipulações.

Colaboração

No Unity, você colabora com sistemas padrão de controle de versão ou serviços pagos como o Unity Version Control.

Os arquivos do Roblox vivem na nuvem (embora você possa exportar cópias), então o Roblox Studio fornece fluxos de trabalho de colaboração integrados para edição simultânea, gerenciamento de grupos, permissões, elaboração de scripts e mais. Veja Colaboração.

Plugins

Semelhante às ferramentas do Unity, o Roblox Studio suporta plugins, que podem simplificar ou oferecer controle adicional sobre vários aspectos do processo de desenvolvimento. Plugins estão disponíveis na Creator Store, assim como ativos, muitos gratuitamente.

Glossário

UnityRobloxNotas
ScenePlace
GameObjectPart ou ModelVeja Diferenças filosóficas.
PrefabPackage
TransformCFrameCFrame não inclui informações de escala. Veja Transforms.
HierarchyExplorer
InspectorProperties
Scene view3D viewport
Game view3D viewportA viewport transita para uma visualização de jogo quando você testa seu jogo.
Project windowAsset Manager ou Toolbox
Terrain InspectorTerrain Editor
Spawn pointSpawnLocation
ConsoleOutput
Asset StoreCreator Store
OverlaysToolbar
ToolPlugin
©2026 Roblox Corporation, Roblox, o logotipo Roblox e Powering Imagination estão entre nossas marcas registradas e não registradas nos EUA e em outros países.