对于上下文,我没有太多的Unity和C#经验,所以如果答案真的很简单,请不要责备我.我试图让地牢的边缘瓷砖在它们各自的边缘上自动创建墙(例如,最右边的一列瓷砖在它的右边有墙).我做了一个瓷砖预制板,它根据4个布尔值改变其精灵,每个布尔值表示边上是否有一堵墙.预制件用于改变精灵,所以预制件本身不是问题.我必须实例化预置来更改它的布尔值,在将数据添加到spawner脚本中新实例化的预置后,预置的精灵不会更新,我只剩下默认的精灵.

我try 将精灵更改从瓷砖预制的start()方法移到一个单独的方法中,以try 让它在实例化后进行更新.

void spawnTile(int r, int c) 
    {
        for(int i = 0; i < c; i++)
        {
            for(int j = 0; j < r; j++)
            {
                Instantiate(tile, new Vector3((float)(i * locationIncrement), (float) (-1 * j * locationIncrement), 0), transform.rotation);
                if(i == 0)
                {
                    tile.GetComponent<TileScript>().setLeftWall(true);
                }
                if(i == (c - 1))
                {
                    tile.GetComponent<TileScript>().setRightWall(true);
                }
                if(j == 0)
                {
                    tile.GetComponent<TileScript>().setTopWall(true);
                }
                if(j == (r - 1))
                {
                    tile.GetComponent<TileScript>().setBottomWall(true);
                    
                }  
                tile.GetComponent<TileScript>().updateWalls();
            }
        }
    }

这是我在spawner方法中使用的代码,即使实现了上述更改,代码仍然不起作用,给我留下的是所有缺省的精灵,而不是预期的更新的精灵.

推荐答案

嗨,你不应该改变预制件,你需要的是改变你创造的即兴表演.

var newInstance = Instantiate(tile, new Vector3((float)(i * locationIncrement), (float) (-1 * j * locationIncrement), 0), transform.rotation);

Instantiate是一个将返回创建的新实例的方法,您应该获取该新实例并对该对象进行更改.

Csharp相关问答推荐

FromServices不使用WebAppliationFactory程序>

获取ASP.NET核心身份认证cookie名称

Elasticsearch:当我try 使用c#将嵌套对象添加到filter中时出现问题

如何使用ConcurentDictionary属性上的属性将自定义System.Text.Json JsonConverter应用于该属性的值?

如果属性名为xyz,我需要使用System.Text.Json修改字符串类型的值""<>

更新产品但丢失产品ASP.NET Core的形象

自动映射程序在GroupBy之后使用项目

C#XmlSerializer-输出控制新行的多个XML片段

如何在C#中从正则表达式中匹配一些数字但排除一些常量(也是数字)

应用程序重新启动后,EFCore列表的BSON反序列化错误

如何让NLog停止写入冗余信息?

如何在VS代码中为C#DotNet配置.json选项以调试内部终端的控制台应用程序

有空容错运算符的对立面吗?

如何在我的C#应用程序中设置带有reactjs前端的SignalR服务器?

ASP.NET Core MVC将值从视图传递到控制器时出现问题

RabbitMQ群集的MassTransit配置问题

C#多键字典和TryGetValue

如何阻止可传递依赖项出现在项目中

为什么Visual Studio 2022建议IDE0251将我的方法设置为只读?

如果图表S批注包含使用LINQ的具有特定名称的批注,我如何签入C#