(Coding) Wie füge ich in Ren'py einen Text zu meiner Gallerie/Glossar hinzu?

2 Antworten

Ich kann dir da keinen Codingtip geben, nur das du dir auch die Ergebnisse von anderen ansehen kannst.

Renpy wird ja von vielen eingesetzt.

Zuallererst müsstest du dein Model GalleryItem um ein Attribut erweitern, welches den Text aufnimmt.

class GalleryItem:
  def __init__(self, name, images, locked="locked", text=""):
    "" ... ""
    self.text = text

Ich gehe einfach einmal davon aus, dass nicht jedes Bild einen Text haben muss, deswegen habe ich dem Parameter einen Standardwert zugeordnet.

Wenn du dein Bild beim Anlegen nun einen Text zuordnen möchtest, dann sieht das so aus:

gallery_items.append(GalleryItem("Stacy - What if", ["img1"], text="Some text"))

Für deinen Screen müsstest du das Bild mit Hilfe eines imagebutton darstellen und für den Text kannst du eine text-Komponente nutzen:

"" ... ""

current_clicked_image = None

for gallery_item in gallery_items:
  "" ... ""
  imagebutton:
    idle gallery_item.images[0]
    action SetScreenVariable("current_clicked_image", gallery_item)

  if current_clicked_image == gallery_item:
    text gallery_item.text
    background "#00d"
    color "#fff"
    size 20
    xalign 0.5
    yalign 1.0

Mehr Details, wie du die Komponenten visuell für dich anpassen kannst, kannst du in der Dokumentation nachlesen. Ich habe hier nur sporadisch ein paar Eigenschaften gesetzt.

Bei Klick auf das Bild wird eine Variable gesetzt, sodass sie auf das angeklickte Bild verweist. Die Abfrage im Screen-Skript prüft beim Rendern der Gallerie, ob das Bild, welches gerade gerendert wird, dem angeklickten Bild (also dem Bild, auf welches die Variable referenziert) entspricht. Wenn ja, wird der Text auch gerendert, andernfalls nicht.

Sollte dieser Zustand auch dann noch bestehen bleiben, wenn du den Screen einmal verlässt und erneut öffnest, müsstest du die Ich-wurde-angeklickt-Information anders speichern, bspw. in einer globalen Variable.