2009-06-28 4 views
2

함수가 들어있는 작업 영역에 스크립트 파일이 포함되어 있습니다. 나는이 함수를 Workspace의 자식 객체에 임베드 된 스크립트 파일에서 호출하려고한다. 나는이 기능을 여러 스크립트 파일에 복사하여 붙여 넣기를하고 싶지 않습니다. 객체 지향 접근법이 가능하다면 최선이라고 생각했습니다.Roblox의 다른 스크립트 파일에서 함수를 호출하는 방법

+0

[BindableFunctions] (http://wiki.roblox.com/index.php?title=BindableFunction) 및 [RemoteFunctions] (http://wiki.roblox.com/index.php? title = RemoteFunction)에 관심이있을 수 있습니다. 원격 함수는 심지어 서버와 클라이언트 사이의 함수를 호출 할 수 있습니다. – ZombieSpy

답변

1

전역 기능을 만들 수 있습니다. 한 스크립트에서이 작업을 수행 : 다른 스크립트에서

_G.myFunction = function() print("Hello World") end 

이 수행

repeat wait() until myFunction myFunction() 

을하는 함수를 정의하여 스크립트 기능을 할당 실행하기 위해 당신은 기다려야합니다 _G되어, 당신은 함수를 호출 할 수 있습니다 _G를 지정하지 않아도.

+0

'이제는 _G를 지정하지 않아도 함수를 호출 할 수 있습니다. – ZombieSpy

1

전역 기능을 만들 수 있습니다. 한 스크립트에서이 수행 다른 스크립트에서

_G.myFunction = function() print("Hello World") end 

을이 수행하는 함수를 정의하여

repeat wait() until myFunction myFunction() 

은 당신이 할 수있는 스크립트 함수를 할당 을 실행하기 위해 당신이 기다려야합니다 _G한다 _G를 지정하지 않고도 함수를 호출하십시오.

ROBLOX 업데이트로 인해 내부 항목에 액세스 할 때마다 _G를 인덱싱해야하므로이 기능은 작동하지 않습니다.

위에서 언급 한 것처럼 ROBLOX에서도 dofile()을 사용할 수 없습니다.

질문에 대한 답변 : _G.MyFunction = function (parameters) end를 추가하여 전역 테이블 _G에 하나의 스크립트로 함수를 작성해야합니다. 다른 스크립트에서는 _G 테이블 내부에서 _G.MyFunction()에 액세스해야합니다.

ROBLOX 스크립터에 나타나는 일반적인 문제는 _G가 생성되기 전에 해당 함수에 액세스하려고한다는 것입니다. 이 문제를 해결하는 간단한 방법은 Camoy의 게시물에서 제안한대로 기다림을 추가하는 것입니다.

repeat wait() until _G.MyFunction() 

희망이 있습니다. -pighead10

+0

이름이 약 100 픽셀 오른쪽에 표시되므로 스택 오버플로에 대한 서명을 게시하지 마십시오. –

1

가장 간단한 방법은 _G를 사용하거나 공유하는 것입니다. 이 코드를 사용하는 것이 다른 스크립트에서 end

-- blah

_G.myFunction = function(Arguments)

, 하나의 스크립트에서

.

repeat wait() until _G.myFunction ~= nil

_G.myFunction()

이 대신 _G의 공유 글로벌 테이블로 작업 할

.

1

이전에 말했듯이 정상적인 _G를 사용하거나 액세스하려면 공유하고 있습니다.

스크립트 하나

_G.myFunction = function() 
    print("Hello, myFunction!") 
end 

스크립트 두

repeat wait() until _G.myFunction() 
_G.myFunction() 

출력

안녕하세요, myFunction이!

2

글로벌 허용 가능 테이블 도 사용할 수 있습니다. 공유는 _G와 같은 방식으로 사용되지만 _G와 달리 변수 식별자 앞에 "공유"를 지정해야합니다. 은 _G (not anymore in ROBLOX)없이 변수 이름을 쓸 수 있습니다. Shared는 다음 컨텍스트에서 사용됩니다.

shared["variablename"] = value 

글로벌 스택과 마찬가지로 _G. 공유의 사용 예제 :

스크립트 1

shared["rprint"] = function(array) for i,v in pairs(array) do print(i, v) end end 

스크립트 2

repeat wait() until shared["rprint"] 
shared.rprint({"Hello, ", "How", " are", " you?"}) 

이 스크립트의 출력은 "안녕하세요, 어떻게 지내?"가 될 것입니다

+0

RoboX Scripting API에서 _G 변수로 선정되었습니다.이 대답은 이제 스크립트간에 '공유'하는 데 사용되는 테이블을 보여줍니다. – Nic

+0

좋습니다. 다른 방법이 없을 때 사람들이 공유에 대해 알아야합니다. – blacksmithgu

+0

'shared.rprint'도 스크립트 1에서 작동합니다. – lhf

1

BindableEvents 또는 RemoteEvents를 사용합니다. 나는 이것이 _G를 사용하는 것보다 더 나은 접근이라고 생각한다. 이렇게하면 모든 것을 로컬로 유지할 수 있습니다. Bindableevents 및 RemoteEvents를 사용하여 함수를 트리거하고 스크립트간에 앞뒤로 필요한만큼 데이터를 보낼 수 있습니다. 서버/서버 통신에는 BindableEvent를 사용하고 서버/클라이언트 - 클라이언트/서버 통신에는 RemoteEvents를 사용하십시오.

http://wiki.roblox.com/index.php?title=API:Class/BindableEvent

0

당신은 고맙게도 추가 된 모듈 스크립트를 사용할 수 있습니다. 그곳에 기능을 넣은 다음 다른 곳으로 전화하여 사용할 수 있습니다!

관련 문제