Creator Guide
Korean
Korean
  • OVERDARE
    • 🚩OVERDARE 소개
    • 🐤시작하기
      • OVERDARE App
      • OVERDARE Studio
    • 📌운영 정책
      • 커뮤니티 가이드라인
      • UGC 콘텐츠 제작 가이드라인
      • UGC의 외부 활용 가이드라인
      • LOGO 활용 가이드라인
      • 지식 재산권 정책
      • 신고 안내
      • 콘텐츠 제재 이의 신청 안내
      • 크리에이터 정산 정책
      • OVERDARE 수익화 가이드라인
      • 포럼 사용 가이드라인
    • 🅰️OVERDARE Glossary
  • MANUAL
    • 🏰스튜디오 메뉴얼
      • 시작하기
        • 스튜디오 인터페이스
        • 월드 템플릿
        • 좌표계
        • 스튜디오 테스트 플레이
        • 월드 퍼블리시
        • Collaboration
      • 에셋 & 리소스 제작
        • 에셋 임포트
        • 애니메이션 에디터
        • Shadow Detail 설정
      • 게임 제작
        • 게임 설정
        • 스크립트 에디터
        • 정렬
        • Material Manager
        • Collision Groups
        • Tag Editor
        • 퍼포먼스 가이드
        • 월드 성능 분석
      • Object
        • 파트
        • 모델
        • 카메라
        • 물리
        • 조명
        • Tool
        • VFX
        • Sound
      • 캐릭터
        • 캐릭터 애니메이션
        • Humanoid Description
      • GUI
    • 📝스크립트 메뉴얼
      • 시작하기
        • 스크립트 개요
        • 루아 기초 가이드
        • 코딩 스타일
        • 오브젝트 참조
        • 유니티 개발자용 가이드
      • 이벤트 및 통신
        • 이벤트
        • 서버-클라 통신
        • BindableEvent
        • Value Objects
      • 입력 및 조작
        • 모바일 조작 처리
        • TPS Strafing System
      • 게임 고도화
        • Saving & Loading Data
        • 트윈
        • 모듈 스크립트
        • JSON과 HTTP 통신
      • 디버깅 & 최적화
        • 중단점
        • 스크립트 최적화 실전 가이드
    • 💡크리에이터 참고 자료
      • 크리에이터를 위한 게임 용어 번역표
    • 💸수익화
      • Payout Guideline
  • DEVELOPMENT
    • 📚API Reference
      • Enums
        • ActuatorRelativeTo
        • AnimationPriority
        • AspectType
        • AssetTypeVerification
        • BorderMode
        • CameraMode
        • CameraType
        • ContextActionResult
        • CoreGuiType
        • DominantAxis
        • EasingDirection
        • EasingStyle
        • ForceLimitMode
        • HttpCompression
        • HttpContentType
        • HumanoidDisplayDistanceType
        • HumanoidStateType
        • KeyCode
        • Material
        • MaterialPattern
        • NormalId
        • ParticleEmitterShape
        • ParticleEmitterShapeInOut
        • ParticleEmitterShapeStyle
        • ParticleFlipbookLayout
        • ParticleFlipbookMode
        • ParticleOrientation
        • PartType
        • PlaybackState
        • RaycastFilterType
        • RollOffMode
        • RotationType
        • UserInputState
        • UserInputType
        • VelocityConstraintMode
      • DataTypes
        • BlendSpaceSampleSata
        • BrickColor
        • CFrame
        • Color3
        • ColorSequence
        • ColorSequenceKeypoint
        • Content
        • Enum
        • EnumItem
        • NumberRange
        • NumberSequence
        • NumberSequenceKeypoint
        • OverlapParams
        • PhysicalProperties
        • Ray
        • RaycastParams
        • RaycastResult
        • ScriptConnection
        • ScriptSignal
        • TweenInfo
        • Udim
        • Udim2
        • Vector2
        • Vector3
      • Classes
        • Animation
        • AngularVelocity
        • AnimationTrack
        • Animator
        • Atmosphere
        • Attachment
        • Backpack
        • BackpackItem
        • BasePart
        • BaseScript
        • Beam
        • BindableEvent
        • BlendSpace
        • BoolValue
        • Bone
        • Camera
        • CharacterMesh
        • CollectionService
        • Constraint
        • ContextActionService
        • CoreGui
        • DataStore
        • DataModel
        • DataStoreGetOptions
        • DataStoreIncrementOptions
        • DataStoreInfo
        • DataStoreKeyPages
        • DataStoreKeyInfo
        • DataStoreService
        • DataStoreListingPages
        • DataStoreSetOptions
        • FormFactorPart
        • Frame
        • Folder
        • GlobalDataStore
        • GuiBase2d
        • GuiButton
        • GuiObject
        • HttpService
        • Humanoid
        • HumanoidDescription
        • ImageButton
        • ImageLabel
        • InputObject
        • IntValue
        • LayerCollector
        • Instance
        • Light
        • Lighting
        • LinearVelocity
        • LocalScript
        • LuaSourceContainer
        • MaterialService
        • MaterialVariant
        • MeshPart
        • Model
        • ModuleScript
        • Mouse
        • NumberValue
        • OrderedDataStore
        • Pages
        • Part
        • ParticleEmitter
        • PhysicsService
        • Player
        • PlayerGui
        • Players
        • PlayerScripts
        • PointLight
        • PVInstance
        • ReplicatedStorage
        • RemoteEvent
        • ScreenGui
        • RunService
        • Script
        • ServerStorage
        • ServiceProvider
        • Skeleton
        • ServerScriptService
        • Sound
        • SoundService
        • SoundGroup
        • SpotLight
        • SpawnLocation
        • StarterCharacterScripts
        • StarterPack
        • StarterGui
        • StarterPlayer
        • StarterPlayerScripts
        • StringValue
        • SurfaceGui
        • SurfaceGuiBase
        • Team
        • Teams
        • TextLabel
        • TextButton
        • Tool
        • Trail
        • Tween
        • TweenService
        • TweenBase
        • UIAspectRatioConstraint
        • UserGameSettings
        • UserInputService
        • UserSettings
        • VectorForce
        • Workspace
        • WrapLayer
        • WorldRoot
        • WrapTarget
  • UPDATE
    • 📰Release Note
Powered by GitBook
On this page
  • 개요
  • 인터페이스
  • 단축키
  • 3D 월드 좌표계
  • 에셋 임포트
  • 리소스 동적 로드
  • 오브젝트 구조 차이
  • Transform
  • Collision
  • Rigidbody (Physics)
  • Camera
  • ParticleSystem
  • UI
  • RectTransform
  • 프리팹
  • Animation
  • 스크립트
  • 특징
  • 코드의 흐름
  • 다른 스크립트의 변수/함수 호출
  • 실행 위치와 실행 순서
  • 서버와 클라이언트간 통신
  • 스크립트 기능 비교
  • print
  • Start Event
  • Update Event
  • 오브젝트 참조
  • Transform
  • 충돌 이벤트
  • Create & Destroy
  • Coroutine
  • 참고 자료
  1. MANUAL
  2. 스크립트 메뉴얼
  3. 시작하기

유니티 개발자용 가이드

Previous오브젝트 참조Next이벤트 및 통신

Last updated 14 days ago

개요

OVERDARE는 멀티플레이 게임의 제작부터 배포까지 한 번에 처리할 수 있는 강력한 게임 제작 플랫폼입니다. 클라이언트 기반의 유니티와 달리, 멀티플레이 환경을 기반으로 하기 때문에 유니티와는 다른 구조로 설계되어 있습니다.

이 문서는 유니티 개발자들이 OVERDARE Studio에 빠르게 적응할 수 있도록 돕기 위해 작성된 문서입니다. OVERDARE를 이용하여 멀티플레이 게임 제작의 새로운 가능성을 탐험해 보세요!

인터페이스

Unity
OVERDARE

Game

X

Scene

Viewport

Hierarchy

Level Browser

Inspector

Properties

Project

X

Console

Output Log

유니티와 달리 OVERDARE Studio에서는 Game View과 Project 패널을 제공하지 않습니다. 대신 플레이를 실행하면 Viewport 패널이 플레이 화면으로 전환됩니다.

유니티에서는 Script와 머테리얼, 메쉬 같은 모든 에셋들이 Project 패널에서 관리되지만, OVERDARE Studio에서는 Script도 Level Browser에서 관리되며, Mesh나 Image, Audio와 같은 외부에서 임포트한 에셋들은 Asset Manager를 통해 별도로 관리됩니다.

단축키

Unity
OVERDARE
기능

Q

Ctrl + 1

Select Tool

W

Ctrl + 2

Move Tool

E

Ctrl + 3

Rotate Tool

R

Ctrl + 4

Scale Tool

Ctrl + P

F5

Play

Ctrl + P

Shift + F5

Stop

3D 월드 좌표계

유니티와 OVERDARE는 X축과 Y축의 방향이 같다는 점에서 좌표계 구조가 유사하지만, Z축의 방향에 차이가 있습니다. 유니티에서는 정면 방향이 +Z인 반면, OVERDARE에서는 정면이 -Z 방향입니다. 이 차이는 캐릭터나 카메라의 Forward 방향을 설정하거나, 이동 및 회전을 계산할 때 기준 축이 반대가 된다는 점에서 중요한 차이를 만듭니다.

에셋 임포트

클라이언트 기반인 유니티에서는 드래그&드롭으로 외부 에셋을 간편하게 임포트할 수 있습니다. 반면, OVERDARE Studio는 크리에이터를 위한 플랫폼으로 외부 에셋을 사용할 때 서버 업로드 과정을 거치도록 설계되었습니다. 이를 통해 크리에이터는 에셋을 쉽게 공유하고 게임 제작에 활용할 수 있습니다.

외부 에셋을 임포트하려면 OVERDARE Studio 상단 메뉴에서 Import 버튼을 클릭해야 합니다. 에셋을 Import하면 서버로 업로드되고, 서버에서 처리가 완료되면 Asset Drawer에 표시됩니다.

리소스 동적 로드

유니티에서는 런타임에서 Resources.Load를 사용해 리소스를 불러올 수 있으며, 이는 Project 패널 내 Resources 폴더에 있는 에셋을 경로 기반으로 로드하는 방식입니다. 예를 들어, Resources.Load로 텍스처 에셋을 불러온 뒤 머티리얼에 적용하는 식으로 사용됩니다.

반면, OVERDARE에서는 각 에셋에 할당된 고유한 AssetId를 통해 외부 에셋을 참조하며, 메시에 텍스처 자체를 할당하는 것이 아니라 해당 텍스처의 AssetId를 설정하는 방식으로 동작합니다. 이는 에디터 기반 내부 자원 관리에 중점을 둔 유니티와, 네트워크 기반 외부 자원 참조 구조를 중심으로 하는 OVERDARE 간의 근본적인 시스템 차이에서 비롯됩니다.

자세히 알아보기

오브젝트 구조 차이

유니티의 주요 기능은 컴포넌트 단위로 구성되므로, 카메라, 콜라이더, 오디오 등 다양한 컴포넌트를 조합하여 오브젝트의 기능을 자유롭게 구성할 수 있습니다. 반면, OVERDARE Studio에서는 기능별로 오브젝트 타입이 고정되어 있습니다.

예를 들어, 유니티에서는 오브젝트에 물리 기능을 추가하려면 Rigidbody 컴포넌트를 추가해야 하지만, OVERDARE Studio에서는 물리 기능이 내장된 Part 오브젝트에서 Anchored 속성을 비활성화해야 합니다.

Transform

유니티에서는 Transform 컴포넌트를 통해 Position, Rotation, Scale 속성을 직접 제어하며, 로컬 및 월드 좌표계를 명확히 구분하여 사용할 수 있습니다.

반면 OVERDARE에서는 Position과 Orientation도 제공되지만, 일반적으로 CFrame을 통해 위치와 회전을 함께 다루며, 스케일은 별도로 Size 속성에서 관리됩니다. 특히 OVERDARE는 기본적으로 모든 위치와 회전 연산이 월드 좌표 기준으로 수행되며, 로컬 좌표 변환이 필요한 경우는 직접 계산해야 합니다.

이처럼 유니티는 구성 요소별 속성이 명확히 분리되어 있고, OVERDARE는 위치와 회전을 하나의 CFrame으로 묶어 처리한다는 점에서 구조적인 차이를 보입니다.

자세히 알아보기

Collision

유니티에서는 물리 기반 충돌 처리를 위해 Collider 컴포넌트를 사용하며, BoxCollider, SphereCollider, MeshCollider 등 다양한 형태의 콜라이더를 선택할 수 있습니다. 충돌 처리를 위해서는 오브젝트에 Collider와 함께 Rigidbody가 필요하며, isTrigger 옵션을 이용하여 트리거 처리도 가능합니다. 충돌 이벤트는 OnCollisionEnter, OnTriggerEnter 등으로 감지하며, 충돌 그룹이나 레이어 마스크를 통한 세밀한 충돌 필터링도 가능합니다.

반면, OVERDARE에서는 모든 Part는 기본적으로 충돌 기능이 내장되어 있으며, CanCollide 속성을 통해 충돌 여부를 제어합니다. OnCollisionEnter이나 OnTriggerEnter 같은 충돌 이벤트는 모두 Touched 이벤트로 처리되며, CanCollide가 비활성화 상태이면 유니티의 트리거 이벤트처럼 동작합니다. OVERDARE에서도 충돌 그룹을 사용하여 충돌 필터링을 설정할 수 있습니다.

자세히 알아보기

Rigidbody (Physics)

유니티에서는 Rigidbody 컴포넌트를 오브젝트에 추가함으로써 해당 오브젝트가 물리 엔진의 영향을 받도록 설정할 수 있습니다. Rigidbody의 velocity, angularVelocity, AddForce, AddTorque 등을 통해 힘 기반의 정밀한 제어가 가능합니다.

OVERDARE에서는 모든 Part가 기본적으로 물리 속성을 내장하고 있습니다. Anchored 속성을 비활성화한 오브젝트는 중력, 충돌, 마찰 등 물리 영향을 받으며, 물리 기반의 동작 제어는 LinearVelocity, AngularVelocity, VectorForce 등과 같은 전용 물리 객체를 통해 구현됩니다.

Camera

유니티에서는 Camera 컴포넌트를 씬 내에 자유롭게 배치하고, 씬 카메라 또는 UI 카메라 등 다양한 용도로 복수의 카메라를 구성할 수 있습니다. 특히 여러 개의 카메라를 미리 배치해두고 SetActive를 통해 활성화된 카메라를 전환하는 방식으로 시점을 변경할 수 있습니다.

반면 OVERDARE에서는 Workspace.CurrentCamera를 통해 현재 활성화된 단일 카메라를 제어하며, 시스템적으로 하나의 카메라만 존재하고 항상 활성 상태로 유지됩니다. 카메라는 기본적으로 플레이어의 Humanoid를 따라가지만, CameraType 속성을 Scriptable로 변경하면 직접 위치나 회전을 제어할 수 있습니다. 이때 유니티처럼 여러 카메라를 전환하는 구조가 아닌, CurrentCamera의 CFrame, FieldOfView 등의 속성을 직접 변경하는 방식으로 시점을 변경합니다.

ParticleSystem

유니티에서는 ParticleSystem 컴포넌트를 오브젝트에 추가하여 다양한 이펙트를 구성할 수 있으며, ParticleSystem 컴포넌트 안에서 Emission, Shape, Velocity, Lifetime 등 여러 모듈을 조합해 복잡한 이펙트를 만들 수 있습니다.

반면 OVERDARE에서는 ParticleEmitter, Beam, Trail 등 이펙트 객체를 Part에 부착해서 사용하며, 각 이펙트 타입은 별도의 객체로 구분되어 있고 설정 가능한 속성도 제한적입니다. 예를 들어 ParticleEmitter는 속도, 방향, 색상, 생존 시간 등 일부 속성만 설정할 수 있으며, 유니티처럼 다중 모듈을 조합하는 방식은 지원되지 않습니다. 또한 파티클은 별도의 위치 설정 없이 파티클이 부착된 Part를 기준으로 방출됩니다.

자세히 알아보기

UI

유니티에서는 UI 시스템의 루트로 Canvas 컴포넌트를 사용하며, 모든 UI 요소는 이 Canvas 하위에 배치되어 렌더링됩니다. UI는 일반적으로 RectTransform을 사용하여 배치되며, 앵커와 피벗, 패널 계층 구조를 통해 복잡한 반응형 UI도 설계할 수 있습니다.

반면 OVERDARE에서 모든 UI 요소는 ScreenGui, SurfaceGui 등으로 구성됩니다. ScreenGui는 HUD나 메뉴처럼 화면에 고정된 UI를 구현하며, UI 요소는 픽셀 값과 비율(스케일)로 구성된 UDim2 값을 통해 배치됩니다.

자세히 알아보기

RectTransform

유니티에서는 UI 요소의 위치, 크기, 정렬 등을 제어하기 위해 RectTransform 컴포넌트를 사용합니다. RectTransform은 일반 Transform과 달리 2D UI 전용으로 설계된 컴포넌트이며, 앵커(Anchor), 피벗(Pivot), 오프셋(Offset) 등을 통해 부모 기준 상대적 배치와 자동 정렬이 가능합니다. 특히 캔버스 내에서 반응형 UI를 구성할 때 중심 역할을 하며, 화면 해상도나 부모 크기에 따라 유동적으로 위치와 크기를 조정할 수 있습니다.

반면, OVERDARE에서는 UI 요소를 제어할 때 Position, Size, AnchorPoint 속성을 사용합니다. 여기서 Position, Size에 사용되는 UDim2 타입은 픽셀 값과 비율(스케일)을 혼합하여 정의할 수 있어, 유니티의 Anchored Position과 Stretch 속성 등을 부분적으로 대체합니다.

자세히 알아보기

프리팹

유니티에서는 몬스터, UI 슬롯과 같이 반복적으로 사용하는 오브젝트를 프리팹으로 설정하여 효율적으로 관리하고 재사용할 수 있습니다. 프리팹은 에디터에서 구성한 오브젝트를 Project 패널에 리소스 형태로 저장하며, 런타임 중 필요한 시점에 Instantiate()로 동적 생성할 수 있습니다. 프리팹 시스템은 재사용성과 유지보수 효율에 중점을 두고 있으며, 원본 프리팹을 수정하면 해당 프리팹을 참조하는 모든 인스턴스에 일괄 반영되어 일관성을 유지할 수 있습니다.

반면, OVERDARE에서는 유니티의 Project와 같은 패널이 별도로 존재하지 않으며, 모든 오브젝트는 LevelBrowser(Hierarchy)를 통해 관리됩니다. 이에 따라 동적으로 생성할 오브젝트는 ServerStorage에 미리 배치해두고, 필요 시 Clone()로 생성하여 Workspace 등으로 옮기는 방식으로 활용됩니다. 이 방식은 런타임 객체 복제 및 보안에 초점을 맞추며, ServerStorage 내 오브젝트는 서버에서만 접근 가능하고 클라이언트에는 노출되지 않기 때문에 안전하게 보관할 수 있습니다.

Animation

유니티에서는 Animation 패널을 통해 카메라, 캐릭터, UI 등 모든 게임 오브젝트에 대한 애니메이션을 제작할 수 있습니다. 제작된 애니메이션은 Animator 패널에서 상태 머신(State Machine) 기반으로 구성하여, 트랜지션 조건이나 파라미터를 활용한 시각적 제어가 가능합니다.

반면, OVERDARE에서는 Animation Editor를 통해 캐릭터 애니메이션만 제작 가능하며, UI나 기타 오브젝트에 대한 에디터 기반 애니메이션 제작은 아직 지원되지 않습니다. 또한, Animator 상태 머신이 존재하지 않으며, 모든 애니메이션 재생과 제어는 스크립트를 통해 직접 구현해야 합니다. 예를 들어, 캐릭터의 이동, 공격, 감정 표현 등은 코드 기반으로 애니메이션을 수동 재생하거나 상태 관리를 로직으로 처리해야 합니다.

자세히 알아보기

스크립트

OVERDARE Studio는 게임 개발 언어로 루아 스크립트를 제공합니다. 루아는 경량화된 스크립트 언어로, 배우기 쉬운 간결한 문법과 빠른 실행 속도를 자랑하며 높은 유연성을 제공합니다. 이러한 특성 덕분에 루아는 C# 스크립트보다 접근성과 생산성이 뛰어나며, 초보 개발자부터 숙련된 개발자까지 누구나 쉽게 활용할 수 있습니다.

특징

특징
Unity (C#)
OVERDARE (Lua)

자료형 명시

O

X

한정자 종류

private, public, static 등

local, global

객체 지향(OOP)

클래스, 인터페이스, 상속, 다형성 등을 통해 객체 지향 프로그래밍 지원

객체 지향을 직접적으로 지원하지 않으며, Metatable로 유사 객체 구현

코드 구조

Class 기반 구조로 모든 코드가 클래스 안에 작성되며, 메서드와 속성을 활용

단순한 함수 기반 구조로 클래스가 없으며, Table을 통해 데이터와 함수를 구조화

함수

함수는 클래스의 멤버

함수를 변수처럼 사용 가능 (First-class function)

Collection

List, Dictionary 등

Table

switch문 유무

O

X

주석

//

--

여러줄 주석

/*와 */

--[[와 ]]--

세미콜론

필수

생략

자세히 알아보기

코드의 흐름

루아 스크립트는 동적 타입 언어로, 스크립트가 위에서부터 순차적으로 실행됩니다. 전방 참조가 지원되지 않으며, 참조하려는 함수나 변수가 먼저 정의되어 있어야 합니다. 이러한 특성은 Lua의 설계가 간결성과 런타임 성능을 중시하기 때문입니다.

PrintText("Hello, Lua Script!") -- 에러 발생 (전방 참조 불가)

function PrintText(message)
    print(message)
end

PrintText("Hello, Lua Script!") -- 동작 가능

다른 스크립트의 변수/함수 호출

변수나 함수를 global으로 선언하면 어디서든 접근할 수 있습니다. 단, global 변수는 어디서든 수정 가능하므로, 코드의 안정성이 떨어질 수 있습니다.

GlobalText = "Hello, World!" -- 전역 변수 선언

-- 전역 함수 선언
function GlobalFunction()
    print("This is a global function!")
end
print(GlobalText) -- 전역 변수 접근
GlobalFunction()  -- 전역 함수 호출

모듈 스크립트를 이용하여 테이블에 변수와 함수를 담아서 반환하는 방식으로 외부에서 사용할 수 있습니다. 이는 전역 변수를 사용하는 것보다 안전하고, 코드의 구조화를 돕습니다.

local SomeModule = {} -- 테이블 생성

-- 모듈 변수
SomeModule.Text = "Hello from module!"

-- 모듈 함수
function SomeModule:Function()
    print("This is a function inside a module!")
end

return SomeModule -- 테이블 반환
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local SomeModule = require(ReplicatedStorage.SomeModule) -- 모듈 로드

print(SomeModule.Text) -- 모듈 변수 접근
SomeModule.Function()  -- 모듈 함수 호출

또는 BindableEvent를 사용하여 서버와 서버, 클라이언트와 클라이언트처럼 같은 환경에 있는 스크립트끼리 통신을 처리할 수 있습니다.

자세히 알아보기

실행 위치와 실행 순서

OVERDARE는 멀티플레이 환경을 기반으로 설계되었기 때문에, 스크립트의 위치에 따라 용도와 실행 여부가 달라집니다. 예를 들어, 카메라나 GUI와 같은 클라이언트 전용 기능은 클라이언트에서만 동작하며, 게임 로직 처리나 오브젝트 이동 등 동기화가 필요한 기능은 서버에서 처리해야 합니다. 이러한 구조는 클라이언트와 서버 간 역할을 명확히 분리하여 효율적이고 안정적인 멀티플레이 동작을 보장합니다.

유니티에서 스크립트의 실행 순서는 Script Execution Order 설정을 통해 명시적으로 지정할 수 있습니다. 반면, OVERDARE Studio에서는 Script나 LocalScript 같은 스크립트의 종류와 Workspace, ServerScriptService 같은 스크립트의 실행 위치에 따라 실행 순서가 자동으로 결정됩니다.

자세히 알아보기

서버와 클라이언트간 통신

OVERDARE는 멀티플레이 게임 기반으로 설계되어 서버에서 실행되는 Script와 클라이언트에서 실행되는 LocalScript를 조합하여 게임이 구현됩니다. 서버와 클라이언트 간의 통신은 RemoteEvent를 사용하여 처리할 수 있습니다.

자세히 알아보기

스크립트 기능 비교

print

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        print("Hello, World!");
    }
}
print("Hello, World!")

Start Event

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        print("Start!")
    }
}
print("Start!")

Update Event

using UnityEngine;

public class Example : MonoBehaviour
{
    private float Timer = 0f;

    void Update()
    {
        Timer += Time.deltaTime;
    }
}
local RunService = game:GetService("RunService")
local Timer = 0

local function UpdateEvent(deltaTime)
    Timer = Timer + deltaTime
end
RunService.Heartbeat:Connect(UpdateEvent)

오브젝트 참조

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        GameObject object = GameObject.Find("Monster/Orc");
    }
}
local Workspace = game:GetService("Workspace")
local Orc = Workspace.Monster.Orc

Transform

using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        transform.position = new Vector3(500, 0, 0);
        transform.rotation = new Vector3(0, 90, 0);
        transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
    }
}
local Part = script.Parent

Part.Position = Vector3.new(500, 0, 0)
Part.Orientation = Vector3.new(0, 90, 0)
Part.Size = Vector3.new(50, 50, 50)

충돌 이벤트

using UnityEngine;

public class Example : MonoBehaviour
{
    private void OnCollisionEnter(Collision collision)
    {
        print("Collision started with : " + collision.gameObject.name);
    }

    private void OnCollisionStay(Collision collision)
    {
        print("Collision ongoing with : " + collision.gameObject.name);
    }

    private void OnCollisionExit(Collision collision)
    {
        Drint("Collision ended with : " + collision.gameObject.name);
    }
}
local Part = script.Parent

local function onTouched(otherPart)
    print(Part.Name, "Touched :", otherPart.Name)
end
Part.Touched:Connect(onTouched)

local function onTouchEnded(otherPart)
    print(Part.Name, "Touch Ended :", otherPart.Name)
end
Part.TouchEnded:Connect(onTouchEnded)

Create & Destroy

using UnityEngine;

public class Example : MonoBehaviour
{
    public GameObject Prefab;

    void Start()
    {
        GameObject newObject = Instantiate(Prefab, new Vector3(300, 0, 0));
        newObject.name = "NewObject";
        newObject.transform.parent = transform;

        Destroy(newObject);
    }
}
local Workspace = game:GetService("Workspace")
local Part = Workspace.Part

local ClonedPart = Part:Clone()
ClonedPart.name = "NewPart"
ClonedPart.Parent = Part
ClonedPart.Position = Vector3.new(300, 0, 0)

Part:Destroy()

Coroutine

using System.Collections;
using UnityEngine;

public class CoroutineExample : MonoBehaviour
{
    private IEnumerator co;

    void Start()
    {
        co = SomeCoroutine();
        StartCoroutine(co);
        print("2")
    }

    IEnumerator SomeCoroutine()
    {
        Debug.Log("1");
        yield return new WaitForSeconds(2.0f);
        Debug.Log("3");
    }
}
local function SomeCoroutine()
    print("1")
    wait(2)
    print("3")
end

local co = coroutine.create(SomeCoroutine)
coroutine.resume(co)  
print("2")

참고 자료

OVERDARE Studio에서 제공하는 스크립트 기능을 확인하려면 아래 문서를 참고하세요.

📝
에셋 임포트
좌표계
Collision Groups
VFX
GUI
좌표계
애니메이션 에디터
캐릭터 애니메이션
루아 기초 가이드
모듈 스크립트
BindableEvent
스크립트 개요
서버-클라 통신
📚API Reference
Unity / OVERDARE Studio
Unity / OVERDARE Studio
Unity / OVERDARE Studio
Unity / OVERDARE Studio
Unity / OVERDARE Studio