如何将所需的资源位置设置为变量?

How to set a required reasource location as a variable?

我目前正在为高级高等计算课程制作游戏。在我之前的问题得到完美回答并帮助了我很多之后。我想知道你是否可以再次与我分享你的智慧...

我目前已经声明了变量,缩小了选择过程。我要做的就是让它识别出它是一个变量而不是位置本身。

UsedTile = My.Resources.Token(Turn)
CurrentTile = My.Resources.Colour(Turn)

我还应该提到 UsedTile 和 CurrentTile 被声明为 Image 以便它可以与我的程序的其余部分一起使用。

Token 是一个在 1 和 2 之间交换的数组,由 Turn 定义。

对不起,如果我解释得不好,但基本上我希望它看起来像

UsedTile = My.Resources.(Colour(Turn))

所以它是可以互换的。所有的资源都在那里,所以例如它应该是一个红色的瓷砖,它应该显示为

UsedTile = My.Resources.ColourRed.png

谢谢,我希望我已经讲得通俗易懂了。如果需要,我很乐意上传更多代码:)

-刘易斯

有点不清楚你问的是什么,但这里有两个建议可能会对你有所帮助。首先,您可能需要考虑一次读取资源并将它们存储在一些其他数据结构中,以便在您以后需要它们时更方便地访问它们。例如,如果您创建了一个像这样的 class:

Public Class ColourResources
    Public Property TurnImages As Image(2)
End Class

然后你可以创建一个数组并像这样填充它们:

Dim colors(2) As ColourResources
colors(0).TurnImages(0) = My.Resources.ColourRed
colors(0).TurnImages(1) = My.Resources.ColourRedUsed
colors(1).TurnImages(0) = My.Resources.ColourBlack
colors(1).TurnImages(1) = My.Resources.ColourBlackUsed

然后当你需要一个特定的图像时,你可以通过类似这样的方式访问:

Dim tile As Image = colors(currentColor).TurnImages(currentTurn)

如果使用 Integer 以外的某些数据类型来跟踪颜色和转弯,则可以使用字典而不是数组。

我的第二个建议是可以通过字符串名称获取资源,而不是通过资源设计器自动生成的 属性。例如,而不是这个:

UsedTile = My.Resources.ColourRed

您也可以像这样访问相同的图像:

UsedTile = DirectCast(My.Resources.ResourceManager.GetObject("ColourRed"), Image)

根据您的需要,这可能对您有用。