1

现在我正在制作一个程序,让您更轻松地修改游戏。在常规游戏中,您必须打开文件并浏览动画。我想让它更容易。我已经完成了程序的其他部分,但转到我需要帮助的最后一部分。我希望能够获取所有形式的第一个动画名称,然后是内部动画名称,让它随之而来。所以我可以制作一个易于使用的编辑器。我知道这很可能涉及正则表达式,而且我很不擅长,我还在尝试重新学习 VB.net 在多年没有玩弄该语言之后。如果有人可以帮助我,我将非常感激:

我要加载的文件:

animation "idle0"
{
    animation "idle_yoga";
};

animation "idle1"
{
    animation "idle_pants";
};
4

1 回答 1

1

在这里,您有一个执行您所追求的示例代码:

Dim dict As Dictionary(Of String, String) = New Dictionary(Of String, String)()

Try
    Dim sr As System.IO.StreamReader = New System.IO.StreamReader("path to the file")
    Dim line As String
    Dim started As Boolean = False
    Dim inside As Boolean = False
    Dim firstInput As String = ""
    Do
        line = sr.ReadLine()

        If (line IsNot Nothing) Then
            If (line.ToLower().Contains("animation")) Then

                If (started AndAlso inside) Then
                    'Animation
                    Dim curItem As String = line.ToLower().Split(New String() {"animation"}, StringSplitOptions.None)(1).Trim()

                    If (curItem.Substring(curItem.Length - 1, 1) = ";") Then curItem = curItem.Substring(0, curItem.Length - 1)
                    curItem = curItem.Replace("""", "")

                    dict.Add(firstInput, curItem)

                    started = False
                    inside = False
                ElseIf (Not inside) Then
                    'Group name
                    Dim curItem As String = line.ToLower().Split(New String() {"animation"}, StringSplitOptions.None)(1).Trim()

                    curItem = curItem.Replace("""", "")
                    firstInput = curItem

                    started = True
                End If
            ElseIf (started AndAlso line.Contains("{")) Then
                inside = True
            End If
        End If
    Loop Until line Is Nothing
    sr.Close()
Catch
End Try

此代码按照描述从文件中读取信息(您逐行发布的代码)并执行您想要的分组。最后,我选择了一个DictionaryListBox可能不是最好的控制;您可能会考虑使用ListView更好的),因为重点是向您展示如何解决这种情况。我想代码的作用很清楚:您必须扩展/调整它以适应您的实际需求,尽管主要结构无论如何都应该在这些行中。

于 2013-09-18T21:52:42.360 回答