这是第一个 Unity 开放项目的repo,是 Unity 和社区合作创建的一个小型开源游戏演示,第一款游戏是一款名为 Chop Chop 的动作冒险游戏。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 

73 行
1.3 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine.Assertions;
public class SoundEmitterList
{
private int _nextUniqueKey = 0;
private List<AudioCueKey> _emittersKey;
private List<SoundEmitter[]> _emittersList;
public SoundEmitterList()
{
_emittersKey = new List<AudioCueKey>();
_emittersList = new List<SoundEmitter[]>();
}
public AudioCueKey GetKey(AudioCueSO cue)
{
return new AudioCueKey(_nextUniqueKey++, cue);
}
public void Add(AudioCueKey key, SoundEmitter[] emitter)
{
_emittersKey.Add(key);
_emittersList.Add(emitter);
}
public AudioCueKey Add(AudioCueSO cue, SoundEmitter[] emitter)
{
AudioCueKey emitterKey = GetKey(cue);
_emittersKey.Add(emitterKey);
_emittersList.Add(emitter);
return emitterKey;
}
public bool Get(AudioCueKey key, out SoundEmitter[] emitter)
{
int index = _emittersKey.FindIndex(x => x == key);
if (index < 0)
{
emitter = null;
return false;
}
emitter = _emittersList[index];
return true;
}
public bool Remove(AudioCueKey key)
{
int index = _emittersKey.FindIndex(x => x == key);
return RemoveAt(index);
}
private bool RemoveAt(int index)
{
if (index < 0)
{
return false;
}
_emittersKey.RemoveAt(index);
_emittersList.RemoveAt(index);
return true;
}
}