Unity声明为public与private的时候容易忽略的点

最近在做一个unity实验项目,写了以下脚本代码:

private MeshRenderer[] ledList ;

private void Awake()
{
   if (ledList != null) return;
   ledList = GetComponentsInChildren<MeshRenderer>();
}

这个脚本代码用于获取子物体所有MeshRenderer组件,在后面方面统一进行修改。

这时候我想将ledList在Unity中可视化,于是加了个声明如下:

[SerializeField]private MeshRenderer[] ledList ;

 private void Awake()
 {
     if (ledList != null) return;
     ledList = GetComponentsInChildren<MeshRenderer>();
 }

这时候在运行中,发现ledList是空?这是为啥?


后来测试后发现,这是unity自己的问题。

无论是[SerializeField]private还是public,为了能正常显示,在运行之初,都会为显式变量赋予一个非空初值,而private则不会。

 所以在后面的代码里使用null作为条件判断就出问题了,ledList被unity自动初始化为一个非空值了,所以无法运行后面代码。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity中,你可以使用 `System.IO.Path` 类来检测文件类型,并根据需要进行处理。以下是一个示例代码,用于检测文件类型为txt的情况并忽略: ```csharp using System.IO; using UnityEngine; public class IgnoreTxtFiles : MonoBehaviour { private void Start() { string folderPath = "YourFolderPath"; // 替换为你的文件夹路径 // 获取文件夹中的所有文件路径 string[] filePaths = Directory.GetFiles(folderPath); // 遍历文件路径 foreach (string filePath in filePaths) { // 检查文件类型是否为txt if (Path.GetExtension(filePath).Equals(".txt", System.StringComparison.OrdinalIgnoreCase)) { // 忽略txt文件,不处理 Debug.Log("Ignored txt file: " + filePath); continue; } // 处理非txt文件 Debug.Log("Processing file: " + filePath); // 进行你的处理逻辑 } } } ``` 在这个示例代码中,我们首先指定一个文件夹路径 `folderPath`,你需要将其替换为你想要检测的文件夹路径。然后,使用 `Directory.GetFiles` 方法获取文件夹中的所有文件路径。接下来,我们遍历这些文件路径,并使用 `Path.GetExtension` 方法获取每个文件的扩展名。如果扩展名是 ".txt",则表示该文件是txt文件,我们将其忽略并打印一条日志。如果扩展名不是 ".txt",则表示该文件不是txt文件,我们将进行自己的处理逻辑,并打印一条相应的日志。 请注意,这只是一个示例代码,你需要根据实际需求和文件处理逻辑进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值