ScriptDocument

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

作成できません
複製されていません

A ScriptDocument インスタンスは、スタジオスクリプトエディタのドキュメントのプロキシーです。それは、 LuaSourceContainer が編集器で開くと代表するのは、開放状態のドキュメント

スクリプトエディタ自体が存在し、DataModel 以外のスレッドで変更されているため、ScriptDocument はスクリプトエディタを開く再プリケートしますが、それは開くエディタではありま

Class.ScriptDocument の存在は、ScriptDocument でドキュメントが開くことを示します。すべての ScriptEditorService インスタンスには、1>Class.ScriptEditorService1> が親としてあります。各インスタンスは次のコーディングコンベンションに準拠しています:

  • すべてのテキストは ScriptDocument に UTF-8 でエンコードされています。
  • すべての行インデックスは 1 インデックスされています。
  • すべてのキャラクターインデックスは 1 インデックスされ、UTF-8 バイトをカウントし、グラフェムではなく、ですので、同じ警告が TextBox.CursorPosition から適用されます:多くのユニコードキャラクターは 1 バイト以上を取ります。
  • すべての範囲は、開始位置と終了位置の両方を含むので、開始 == 終了は空の範囲を意味します。

すべての ScriptDocument の API は、プラグイン レベルのセキュリティです。

概要

方法

  • GetLine(lineIndex : number?):string
    プラグインのセキュリティ

    指定された行のテキストを返します。引数が提供されていない場合は、現在のカーソルポジションの行を返します。

  • プラグインのセキュリティ

    文書の行数を返します。

  • プラグインのセキュリティ

    存在する場合は、LuaSourceContainer インスタンスを返します。そうでない場合は、nil を返します。

  • プラグインのセキュリティ

    編集中に選択したテキスト、または空の文字列を取得します。

  • プラグインのセキュリティ

    スクリプトエディタの最後の選択をフォーマット: CursorLine, CursorChar, AnchorLine, AnchorChar 。スクリプトエディタに選択がない場合は、CursorLine == AnchorLine および CursorChar == AnchorChar

  • プラグインのセキュリティ

    カーソルの位置とアンカーの大きさを取得します。エディタに選択がない場合は、同じ値です。

  • プラグインのセキュリティ

    カーソルの位置とアンカーの小さいものを取得します。エディタに選択がない場合は、同じ値です。

  • GetText(startLine : number?,startCharacter : number?,endLine : number?,endCharacter : number?):string
    プラグインのセキュリティ

    オープンエディタからテキストを返します。

  • プラグインのセキュリティ

    編集中の行番号を編集器に表示します。

  • プラグインのセキュリティ

    エディタにテキストが選択されているかどうかを返します。

  • プラグインのセキュリティ

    Class.ScriptDocument がコマンドバーを表示すると、 Class.ScriptDocument が返されます。

  • イールド
    プラグインのセキュリティ

    このドキュメントに関連付けられたエディターのリクエストが閉じるじます。編集者がリクエストに応答するまで、現在のスレッドを返します。

  • EditTextAsync(newText : string,startLine : number,startCharacter : number,endLine : number,endCharacter : number):Tuple
    イールド
    プラグインのセキュリティ

    入力範囲内のテキストを ( startLinestartColumn から ( 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

プラグインのセキュリティ

編集中に選択したテキスト、または空の文字列を取得します。


戻り値

コードサンプル

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 == AnchorLine および CursorChar == 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つの引数で呼び出される場合、文書の開始時点 ( startLinestartColumn 、終了時点 ( endLine 、 1> endColumn1> ) を取得します。

パラメータ

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 がコマンドバーを表示すると、Class.ScriptDocument がコマンドバーを表示すると、Class.ScriptDocument がコマンドバーを表示すると、1>Class.ScriptDocument1> がコマンドバーを表示すると、4>Class.ScriptDocument4> がコマンドバーを表示すると、7>Class.ScriptDocument7> がコマンドバーを表示すると、ScriptDocument0> がコマンドバーを表示すると、3>Class.ScriptDocument3>

  • Studio はプラグインを実行する前にコマンドバーを作成しますので、Studio の次の Transition の間、開いたイベントをクローズし、再度開きすることがあります。
  • セキュリティの理由で、 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

イールド
プラグインのセキュリティ

このドキュメントに関連付けられたエディターのリクエストが閉じるじます。Yields 現在のスレッドまで、エディターがリクエストに応答するまで。 機能が成功すると、返ります (真、ナイル)。 機能が失敗すると、Yields (真、 strin文字列) を返します。

この関数はコマンドバーを閉じることはできません。


戻り値

コードサンプル

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 , startColumn ) を ( endLine , 1> endColumn

機能が成功すると、truenil が返されます。

関数がエラーをスローする場合:

  • 範囲は無効です。
  • 範囲は、ユニコード文字の 1 つのバイトを取り捨てるなど、ユニコード文字の範囲を減少させます。
  • newText 自体には、無効な UTF-8 が含まれています。

機能が失敗すると、( false、 strin文字列) が返されます。これは、ストリングが問題の説明です。最も一般的な失敗タイプはバージョンミスマッチです。これは、 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

プラグインのセキュリティ

スクリプトドキュメントが変更されるときに発動します。

パラメータ

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)