Name Typ Von
Textposition ändern Definition Verschiedene


Dieses Skript setzt den Text (Charakter oder Erzählung) an eine feste Position auf dem Bildschirm.


Anweisungen

Visionaire bietet eine Hook-Funktion, mit der du die Textposition ändern kannst. Unten findest du einige Beispiele; welches Skript du brauchst, hängt davon ab, welche Texte du behandeln und wo du sie platzieren willst.

Füge eines der Skripte im Skripteditor von Visionaire Studio hinzu, lege es als Definitionsskript fest und passe es an deine Anforderungen an.


Skripte

Grundeinrichtung

Dieses einfache Beispiel zeigt, wie die Hook-Funktion eingerichtet wird. Es verarbeitet Charakter- und Erzähltexte.

-- Hook function
function txtPos(text)
  -- Define the new text position
  text.Position = {x = 300, y = 300}
  
  -- Return true to tell the engine that the text position is handled by this hook function
  return true
end

-- Register the hook function for the "setTextPosition" operation
registerHookFunction("setTextPosition", "txtPos")


Nach Sprecher unterscheiden

Frage den Besitzer des Textes ab, wenn die Textposition nur für Texte eines bestimmten Charakters gelten soll.

function txtPos(text)
  -- Only handle texts spoken by the character named "hero"
  if text.Owner.name == "hero" then
    text.Position = {x = 300, y = 300}
    
    return true
  end
  
  -- Return false to let the engine ignore the hook function, if the "if" query wasn't met
  return false
end

registerHookFunction("setTextPosition", "txtPos")


Passe die Abfrage an, um alle Charaktertexte oder alle Erzählertexte zu behandeln.

  -- Handle character texts only
  if text.Owner.tableId == eCharacters then
  ...

  -- Only handle narration texts
  if text.Owner.tableId == eGame then
  ...


Scrollende Szenen

Die Textposition bezieht sich auf die Szene, nicht auf den sichtbaren Bildschirm. Ist deine Szene größer als die Spielauflösung (und damit scrollbar), musst du die aktuelle Scrollposition berücksichtigen. (Der Code funktioniert natürlich auch, wenn die Szene genau der Spielauflösung entspricht, denn dann ist die Scrollposition immer [0,0].)

function txtPos(text)
  if text.Owner.tableId == eCharacters then
    -- Define the new text position on the screen
    text.Position = {x = 300 + game.ScrollPosition.x, y = 300 + game.ScrollPosition.y}
 
    return true
  end
  
  return false
end

registerHookFunction("setTextPosition", "txtPos")


Damit wird die horizontale Position auf die Mitte gesetzt. Stelle in den Spieleigenschaften auch die Textausrichtung auf „Mitte“.

  -- Set the text position horizontally centered
   text.Position = {x = game.WindowResolution.x/2 + game.ScrollPosition.x, y = 300 + game.ScrollPosition.y}
  ...