【问题标题】:Changing C# script to generate a map from a png file更改 C# 脚本以从 png 文件生成地图
【发布时间】:2016-05-25 21:08:27
【问题描述】:

在 Unity3d 中,我下载了一个名为 Cubiquity 的资源,有一个示例脚本可以扫描黑白迷宫的 png 文件并从中构建一个 3d 迷宫。我想知道的是如何更改脚本以查找颜色而不仅仅是黑色和白色?或者是否有替代此方法可能更简单的方法?

这是示例脚本

http://pastebin.com/mJucT07c

【问题讨论】:

    标签: c# unity3d png unityscript


    【解决方案1】:

    该脚本只是对 GetPixels 的红色进行采样(链接脚本中的第 67 行):

    bool isWall = mazeImage.GetPixel(x, z).r < 0.5; // A black pixel represents a wall  
    

    因此,如果您希望它测试颜色,您可以将其更改为:

    Color color = mazeImage.GetPixel(x, z);
    

    然后你可以运行你的 if 语句或任何你想做的事情。

    if(color.r > 0)
        Debug.Log("Colour is red");
    if(color.g > 0)
        Debug.Log("Colour is green");
    if(color.b > 0)
        Debug.Log("Colour is blue");
    

    【讨论】:

    • 感谢您的帮助。我是 C# 新手,感谢您帮助理解代码
    • 有没有办法做一个“if”语句来查找 RGB 而不是一次只查找一个例如甚至知道它不正确 if(color.r = 1 & color.g = 2 &颜色.b = 3)
    • 当然,if(color.r == 1 && color.g == 1 && color.b == 1) Debug.log("白色");另请注意,RGBA 将始终返回一个介于 0 和 1 之间的值。
    • 是否可以通过某种方式将其从 color.r color.g color.b 更改为 color32,这样我可以获得 256 个值?
    • @NathanRadtke 我不确定你的问题是什么,但是 color.r 被限制在 0 和 1 之间,所以如果 color.r == 0.5 那么 0.5 * 255 = 127.5。颜色值通常为 0-255 而不是 256。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2023-03-29
    • 2014-03-14
    • 2012-02-15
    相关资源
    最近更新 更多