在unity内实现如下需求:通过Resources方法,在Resource/InventoryIcon/里找到所有以“生菜”为开头的资源,把它们的名字整合到一个List<string> NameList中,然后从这个list里随机选择一条
时间: 2024-10-18 09:13:00 浏览: 19
Unity插件 实现 刮刮卡/刮刮乐 效果
在Unity中,你可以使用`Resources.FindObjectsOfTypeAll`方法配合字符串操作来实现这个需求。首先,你需要确定资源文件夹(`Resource/InventoryIcon/`)中的资源是否都是纹理(Textures)或者其他支持名字查找的对象类型。以下是一个步骤说明:
1. 获取特定路径下的所有资源:
```csharp
string resourceNamePattern = "生菜*";
Type resourceType = Resources.GetTypeDefinition(typeof(Texture)); // 可能需要替换为实际的资源类型,比如Sprite、AudioClip等
// 使用FindObjectsOfTypeAll查找所有匹配资源
Object[] resources = Resources.FindObjectsOfTypeAll(resourceType, resourceNamePattern);
```
2. 将资源名添加到列表中:
```csharp
List<string> nameList = new List<string>();
foreach (Object obj in resources)
{
if (obj != null)
{
string name = obj.name; // 资源通常会有一个"name"属性包含其名称
nameList.Add(name);
}
}
```
3. 随机选择一个名字:
```csharp
if (nameList.Count > 0)
{
Random random = new Random();
int index = random.Next(nameList.Count);
string selectedName = nameList[index];
Debug.Log("随机选择的名字: " + selectedName); // 这里打印出来供后续使用
}
else
{
Debug.LogError("没有找到符合条件的资源名");
}
```
阅读全文