ScriptDocument

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음
복제되지 않음

Class.ScriptDocument 인스턴스는 Studio 스크립트 편집기의 문서의 프록시입니다. 그것은 편집기에서 열린 문서의 상태를 나타내며, 표시는 코드를 실행하는 것보다 읽기 및 편집이 더

스크립트 편집기 자체가 존재하며 다른 스레드에서 DataModel 변경하지만, ScriptDocument 은 스크립트 편집기를 업데이트하지만, 그것은 열린 스크립트 편집기를

Class.ScriptDocument 이 있는 경우 스크립트 편집기에서 문서를 열 수 있습니다. 모든 ScriptDocument 인스턴스에는 ScriptEditorService 가 부모로 지정되어 있습니다. 각 인스턴스는 다음 코딩 규칙을 준수합니다.

  • 모든 텍스트는 ScriptDocument 에 있는 UTF-8 인코딩됩니다.
  • 모든 라인 인덱스는 1-인덱싱됩니다.
  • 모든 캐릭터 인덱스는 1인덱싱되며 UTF-8 바이트이므로 글래프ェ마가 아닌 동일한 경고가 적용됩니다. TextBox.CursorPosition에서 동일한 경고가 적용됩니다: 많은 유니코드 문자가 하나 이상의 바이트를 차지합니다.
  • 모든 범위는 시작 위치와 끝 위치가 모두 포함되므로 시작 == 끝은 빈 범위를 나타냅니다.

모든 ScriptDocument API는 플러그인 수준 보안에 있습니다.

요약

메서드

  • GetLine(lineIndex : number?):string
    플러그인 보안

    지정된 줄의 텍스트를 반환합니다. 인수를 제공하지 않으면 현재 커서 위치의 줄을 반환합니다.

  • 플러그인 보안

    문서에 있는 줄 수를 반환합니다.

  • 플러그인 보안

    기본 LuaSourceContainer 인스턴스를 반환합니다, 있는 경우 nil 그렇지 않으면.

  • 플러그인 보안

    선택 항목이 없으면 편집기에서 텍스트를 가져오거나 빈 문자열을 가져옵니다.Gets the text selected in the editor, or an empty string if there is no selection.

  • 플러그인 보안

    스크립트 편집기의 마지막 선택을 형식: CursorLine, CursorChar, AnchorLine, AnchorChar 로 반환합니다. 스크립트 편집기에 선택이 없으면 CursorLine == AnchorLineCursorChar == AnchorChar .

  • 플러그인 보안

    커서 위치의 크기를 가져옵니다. 편집기에 선택이 없으면 동일한 값이 됩니다.

  • 플러그인 보안

    커서 위치의 작은 값을 가져옵니다. 편집기에 선택 항목이 없으면 동일합니다.

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    플러그인 보안

    열린 편집기에서 텍스트를 반환합니다.

  • 플러그인 보안

    편집기 변경에 표시된 줄 번호를 반환합니다.

  • 플러그인 보안

    에디터에 텍스트가 선택되었는지 여부를 반환합니다.

  • 플러그인 보안

    Class.ScriptDocument 가 명령 바를 나타내면 진실로 반환합니다.

  • 생성
    플러그인 보안

    이 문서와 관련된 편집기의 요청이 닫다. 편집기가 요청에 응답할 때까지 현재 스레드를 생성합니다.

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    생성
    플러그인 보안

    새 텍스트를 사용하여 지정된 범위의 텍스트를 ( startLine , startColumn )에서 ( endLine , 1> endColumn1> )에 대체합니다.

  • ForceSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    생성
    플러그인 보안

    편집기에서 커서 선택을 인수 값으로 설정하도록 요청합니다.

  • 생성
    플러그인 보안
  • RequestSetSelectionAsync(cursorLine : number,cursorCharacter : number,anchorLine : number?,anchorCharacter : number?):Tuple
    생성
    플러그인 보안

    편집기에서 커서 선택을 인수 값으로 설정하도록 요청합니다.

이벤트

속성

메서드

GetLine

플러그인 보안

지정된 줄의 텍스트를 반환합니다. 인수를 제공하지 않으면 현재 커서 위치의 줄을 반환합니다.

매개 변수

lineIndex: number
기본값: "nil"

반환

코드 샘플

ScriptDocument.SelectionChanged and ScriptDocument:GetLine()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function(positionLine, positionCharacter, anchorLine, anchorCharacter)
print(`Selected: Line {positionLine}, Char {positionCharacter}`)
print(`Anchor: Line {anchorLine}, Char {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Selected line text: {lineText}`)
end)
else
print("No scripts open")
end

GetLineCount

플러그인 보안

활성 문서의 줄 수를 반환합니다.


반환

코드 샘플

ScriptDocument:GetLineCount()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local lineCount = scriptDocument:GetLineCount()
print(`The script has {lineCount} lines!`)
else
print("No scripts open")
end
플러그인 보안

기본 LuaSourceContainer 인스턴스를 반환합니다, 있는 경우 nil 그렇지 않으면.


반환

코드 샘플

ScriptDocument:GetScript()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local openScript = scriptDocument:GetScript()
print(`Currently open script: {openScript:GetFullName()}`)
else
print("No scripts open")
end

GetSelectedText

플러그인 보안

선택 항목이 없으면 편집기에서 텍스트를 가져오거나 빈 문자열을 가져옵니다.Gets the text selected in the editor, or an empty string if there is no selection.


반환

코드 샘플

ScriptDocument:HasSelectedText() and :GetSelectedText()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function()
if scriptDocument:HasSelectedText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Currently selected text: {selectedText}`)
else
print("No text currently selected")
end
end)
else
print("No scripts open")
end

GetSelection

플러그인 보안

스크립트 편집기의 마지막 선택을 형식: CursorLine, CursorChar, AnchorLine, AnchorChar 로 반환합니다. 스크립트 편집기에 선택이 없으면 CursorLine == AnchorLineCursorChar == AnchorChar .


반환

커서 라인, 커서 캐릭터, 앵커 라인, 앵커 캐릭터.

GetSelectionEnd

플러그인 보안

커서 위치의 크기를 가져옵니다. 편집기에 선택이 없으면 동일한 값이 됩니다.


반환

코드 샘플

ScriptDocument:GetSelectionStart() and :GetSelectionEnd()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local startLine, startCharacter = scriptDocument:GetSelectionStart()
local endLine, endCharacter = scriptDocument:GetSelectionEnd()
print(`Selection start: Line {startLine}, Char {startCharacter}`)
print(`Selection end: Line {endLine}, Char {endCharacter}`)
else
print("No scripts open")
end

GetSelectionStart

플러그인 보안

커서 위치의 작은 값을 가져옵니다. 편집기에 선택 항목이 없으면 동일합니다.


반환

코드 샘플

ScriptDocument:GetSelectionStart() and :GetSelectionEnd()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local startLine, startCharacter = scriptDocument:GetSelectionStart()
local endLine, endCharacter = scriptDocument:GetSelectionEnd()
print(`Selection start: Line {startLine}, Char {startCharacter}`)
print(`Selection end: Line {endLine}, Char {endCharacter}`)
else
print("No scripts open")
end

GetText

플러그인 보안

열린 편집기에서 텍스트를 반환합니다. 0, 2 또는 4 인수로 호출해야 합니다.

  • 0개의 인수로 호출하면 열린 편집기의 모든 콘텐츠를 가져옵니다.
  • 2개의 인수로 호출되면 문서 시작 위치(startLine , startColumn )의 텍스트를 가져옵니다.
  • 4개의 인수로 호출되면 문서 시작 위치(startLine, startColumn,)에 텍스트를 가져와 종료 위치(endLine, 1> startColumn1>,)에 텍스트를 가져옵니다.

매개 변수

startLine: number
기본값: "nil"
startCharacter: number
기본값: "nil"
endLine: number
기본값: "nil"
endCharacter: number
기본값: "nil"

반환

코드 샘플

ScriptDocument:GetText()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local text = scriptDocument:GetText()
print(`Script contents: {text}`)
else
print("No scripts open")
end

GetViewport

플러그인 보안

편집기 변경에서 현재 표시되는 줄 번호를 반환합니다. 편집기는 시작 라인과 끝 라인 사이의 줄을 표시합니다, 포함. 첫 번째 줄은 부분적으로만 표시될 수 있습니다. 예를 들어, 마지막 줄의 상위 픽셀만 화면에 표시될 수 있습니다. 또한, 코드 폴딩은 시작 라인과 끝 라인 사이의 줄


반환

코드 샘플

ScriptDocument:GetViewport

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
local firstLine, lastLine = scriptDocument:GetViewport()
print(`Currently viewing lines {firstLine} to {lastLine}`)
else
print("No scripts open")
end

HasSelectedText

플러그인 보안

에디터에 텍스트가 선택되었는지 여부를 반환합니다.


반환

코드 샘플

ScriptDocument:HasSelectedText() and :GetSelectedText()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function()
if scriptDocument:HasSelectedText() then
local selectedText = scriptDocument:GetSelectedText()
print(`Currently selected text: {selectedText}`)
else
print("No text currently selected")
end
end)
else
print("No scripts open")
end

IsCommandBar

플러그인 보안

Class.ScriptDocument 가 명령 바를 나타내면 진실로 반환합니다. 명령 바에는 이 API에서 특별한 규칙 및 제한이 있습니다.

  • Studio는 플러그인을 실행하기 전에 명령 바를 만들므로 데이터 모델 사이에서 Studio가 닫힌 상태에서 열린 이벤트를 다시 열지는 않지만 항상 열린 상태로 재설정됩니다.
  • 보안 이유로 EditTextAsync로 명령 바를 편집할 수 없습니다.

반환

코드 샘플

ScriptDocument:IsCommandBar()

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if document:IsCommandBar() then
print("Command bar document:", document)
end
end

CloseAsync

생성
플러그인 보안

편집기가 이 문서와 관련된 요청을 닫다. 편집기가 요청에 응답할 때까지 현재 스레드를 생성합니다. 함수가 성공하면 반환(true, null)이 됩니다. 함수가 실패하면 설명(문자열)이 문제의 설명으로 표시됩니다.

이 함수는 명령 바를 닫을 수 없습니다.


반환

코드 샘플

ScriptDocument:CloseAsync

--!nocheck
-- Run the following code in the Command Bar
local ScriptEditorService = game:GetService("ScriptEditorService")
local documents = ScriptEditorService:GetScriptDocuments()
local scriptDocument
-- Find the first open script document
for _, document in documents do
-- The Command Bar can't be closed, so don't select it
if not document:IsCommandBar() then
scriptDocument = document
break
end
end
if scriptDocument then
local success, err = scriptDocument:CloseAsync()
if success then
print(`Closed {scriptDocument.Name}`)
else
warn(`Failed to close {scriptDocument.Name} because: {err}`)
end
else
print("No open scripts")
end

EditTextAsync

생성
플러그인 보안

편집에 대한 응답을 편집에 대한 리플리케이션으로 작성하는 경우 범위의 텍스트를 ( startLine ,

함수가 성공하면 ( true , nil )을 반환합니다.

함수가 오류를 던져 버리면:

  • 범위가 유효하지 않은.
  • 범위는 유니코드 문자를 잘라냈습니다, 예를 들어 유니코드 문자의 일부만 바꿀 수 있습니다.
  • 새 텍스트 자체에는 유효하지 않은 UTF-8이 포함되어 있습니다.

함수가 실패하면 ( false, string ) 이 반환됩니다. 문자열은 문제에 대한 설명입니다. 가장 일반적인 오류 유형은 버전 불일치입니다. 이는 편집기가 EditTextAsync 와 동기화되지 않은 동안 ScriptDocument 를 시도하는 경우에 발생합니다. 이 경우 편집을 다

매개 변수

newText: string
startLine: number
startCharacter: number
endLine: number
endCharacter: number

반환

ForceSetSelectionAsync

생성
플러그인 보안

편집기에서 커서 선택을 값 집합으로 설정하도록 요청합니다. 모든 앵커 인수는 패스해야 하거나 아닙니다. 아무 것도 패스되지 않으면 편집기는 커서를 기본값으

매개 변수

cursorLine: number
cursorCharacter: number
anchorLine: number
기본값: "nil"
anchorCharacter: number
기본값: "nil"

반환

코드 샘플

ScriptDocument:ForceSetSelectionAsync()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
-- Get the text on the cursor's current line
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Force select the entire line of text
local success, err = scriptDocument:ForceSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Set selection!")
else
print(`Failed to set selection because: {err}`)
end
else
print("No scripts open")
end

MultiEditTextAsync

생성
플러그인 보안

매개 변수

edits: Array

반환

RequestSetSelectionAsync

생성
플러그인 보안

편집기에서 커서 선택을 인수 값으로 설정하도록 요청합니다. 모든 앵커 인수는 패스해야 하거나 아닙니다. 아무 것도 패스되지 않으면 커서가 해당 앵커 인수와 동일하게 설정됩니다. 편집기는 문서 콘텐

매개 변수

cursorLine: number
cursorCharacter: number
anchorLine: number
기본값: "nil"
anchorCharacter: number
기본값: "nil"

반환

코드 샘플

ScriptDocument:RequestSetSelectionAsync()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
-- Get the text on the cursor's current line
local cursorLine = scriptDocument:GetSelection()
local lineText = scriptDocument:GetLine(cursorLine)
-- Force select the entire line of text
local success, err = scriptDocument:RequestSetSelectionAsync(cursorLine, 1, cursorLine, #lineText + 1)
if success then
print("Set selection!")
else
print(`Failed to set selection because: {err}`)
end
else
print("No scripts open")
end

이벤트

SelectionChanged

플러그인 보안

텍스트 변경 후 즉시 발생하는 스크립트 문서 변경 시 발생합니다.Fires when the ScriptDocument changes, including immediately after a text change.

매개 변수

positionLine: number
positionCharacter: number
anchorLine: number
anchorCharacter: number

코드 샘플

ScriptDocument.SelectionChanged and ScriptDocument:GetLine()

--!nocheck
-- Run the following code in the Command Bar while a script is open
local ScriptEditorService = game:GetService("ScriptEditorService")
local function getFirstOpenDocument()
local documents = ScriptEditorService:GetScriptDocuments()
for _, document in documents do
if not document:IsCommandBar() then
return document
end
end
return nil
end
local scriptDocument = getFirstOpenDocument()
if scriptDocument then
scriptDocument.SelectionChanged:Connect(function(positionLine, positionCharacter, anchorLine, anchorCharacter)
print(`Selected: Line {positionLine}, Char {positionCharacter}`)
print(`Anchor: Line {anchorLine}, Char {anchorCharacter}`)
local lineText = scriptDocument:GetLine(positionLine)
print(`Selected line text: {lineText}`)
end)
else
print("No scripts open")
end

ViewportChanged

플러그인 보안

편집기에서 표시된 줄 번호가 변경될 때 발생합니다. 자세한 내용은 ScriptDocument.GetViewport 를 참조하십시오.

매개 변수

startLine: number
endLine: number

코드 샘플

Connecting to ScriptDocument.ViewportChanged

--!nocheck
--[[
To run:
1. Ensure Output view is open
2. Run the below code in the Command Bar
3. Scroll up and down in the opened Script window
Print statements from the ViewportChanged event will appear in the Output
]]
local Workspace = game:GetService("Workspace")
local ScriptEditorService = game:GetService("ScriptEditorService")
-- Create text that spans many lines
local dummyText = string.rep("-- Dummy Text\n", 60)
-- Create a script containing the dummy text and open it
local otherScript = Instance.new("Script")
otherScript.Source = dummyText
otherScript.Parent = Workspace
local success, err = ScriptEditorService:OpenScriptDocumentAsync(otherScript)
if not success then
warn(`Failed to open script because: {err}`)
return
end
-- Get a reference to the opened script
local scriptDocument = ScriptEditorService:FindScriptDocument(otherScript)
local function onViewportChanged(startLine: number, endLine: number)
print(`Script Viewport Changed - startLine: {startLine}, endLine: {endLine}`)
end
-- Connect the ViewportChanged event to the function above that prints the start and end line of the updated viewport
scriptDocument.ViewportChanged:Connect(onViewportChanged)