Clojure 呈现标签不需要';除非screen函数对其进行评估,否则无法工作

Clojure 呈现标签不需要';除非screen函数对其进行评估,否则无法工作,clojure,play-clj,Clojure,Play Clj,我正在尝试渲染on renderscreen函数上的一个简单标签,但它不起作用。我得到的只是一个空白屏幕 这花了我一些时间,但我最终发现,当我返回除标签以外的其他东西时,就会发生这种情况。例如,这项工作: (defscreen main-screen :on-show (fn [screen entities] (update! screen :renderer (stage)) []) :on-render (fn [screen _] (clear!

我正在尝试
渲染
on renderscreen函数上的一个简单标签,但它不起作用。我得到的只是一个空白屏幕

这花了我一些时间,但我最终发现,当我返回除标签以外的其他东西时,就会发生这种情况。例如,这项工作:

(defscreen main-screen
  :on-show
  (fn [screen entities]
    (update! screen :renderer (stage))
    [])

  :on-render
  (fn [screen _]
    (clear!)
    (render! screen [(label "Hello, world!" (color :white))])))
这并没有改变(所改变的只是渲染时
上的最后一行):

为了测试,我用
纹理
替换了
标签
,它确实起了作用

这是什么原因造成的?它看起来太武断了(我在第一个例子中计算的标签被完全忽略了!那么为什么我必须通过它呢?我不知道发生了什么)

另外,在每一帧上创建标签在这种情况下是有意的,我知道我可以从我在《秀》
中制作的一帧上设置标签,但我试着更动态一些。我还尝试在
渲染之后放置
线程/睡眠
以确保在渲染和清除之间有一个可见的时间窗口

我是一个完全的初学者,我想知道除了如何修复它之外,为什么上面的方法不起作用?

检查一下clj的剧本,特别是:

所有函数都将屏幕映射和实体向量作为参数 返回结尾处的实体列表,包括所需的更改。如果 函数返回nil,实体列表不变

既不返回
nil
,也不返回(可选更改的)
实体
,而是返回带字符串的向量

我想这就是代码不起作用的原因——不过我还没有测试过它


你对“自己的数据”的意图是什么?

我试图拥有的实体是一个带有一个元素的向量,它是我游戏状态的地图。我想用来自州的文本制作一个标签,并
渲染它。这就是我为我的
clear所做的颜色和我的纹理的绘制,所有的东西都被渲染,除了标签。
(defscreen main-screen
  :on-show
  (fn [screen entities]
    (update! screen :renderer (stage))
    [])

  :on-render
  (fn [screen _]
    (clear!)
    (render! screen [(label "Hello, world!" (color :white))])
    ["I just wanna pass my own data here, ugh.."]))