本帖最後由 ziyuaner2 於 2016-1-5 23:47 編輯
public void FixedUpdate()
{
if ((this._mode == eMode.Generate) && this.GenerateEnemy())
{
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length - 1))
{
this._mode = eMode.Battle;
}
else
{
this._mode = eMode.Empty;
}
this._berserkTime = 30f;
}
this._FieldJobType = 0;
foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
{
this._FieldJobType |= ((int) 1) << behavior._param.jobType;
}
}
public void FixedUpdate()
{
if ((this._mode == eMode.Generate) && this.GenerateEnemy())
{
if (this._nNowWave < (BattleDataManager.GetEnemyList().Length - 1))
{
this._mode = eMode.Battle;
}
else
{
this._mode = eMode.Empty;
}
this._berserkTime = 30f;
}
this._FieldJobType = 0;
foreach (CharaBehavior behavior in this._battleManager.GetMemberList(eCharaType.ENEMY, true, false, true, false))
{
this._FieldJobType |= ((int) 1) << behavior._param.jobType;
}
}
對應IL過來就是
.method public hidebysig instance void FixedUpdate() cil managed
{
.maxstack 17
.locals init (
[0] class [mscorlib]System.Collections.Generic.List`1<class CharaBehavior> list,
[1] class CharaBehavior behavior,
[2] valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior> enumerator)
L_0000: ldarg.0
L_0001: ldfld valuetype EnemyManager/eMode EnemyManager::_mode
L_0006: ldc.i4.1
L_0007: bne.un L_0049
L_000c: ldarg.0
L_000d: call instance bool EnemyManager::GenerateEnemy()
L_0012: brfalse L_0049
L_0017: ldarg.0
L_0018: ldfld int32 EnemyManager::_nNowWave
L_001d: call class EnesetList[] BattleDataManager::GetEnemyList()
L_0022: ldlen
L_0023: conv.i4
L_0024: ldc.i4.1
L_0025: sub
L_0026: bge L_0037
L_002b: ldarg.0
L_002c: ldc.i4.2
L_002d: stfld valuetype EnemyManager/eMode EnemyManager::_mode
L_0032: br L_003e
L_0037: ldarg.0
L_0038: ldc.i4.6
L_0039: stfld valuetype EnemyManager/eMode EnemyManager::_mode
L_003e: ldarg.0
L_003f: ldc.r4 30
L_0044: stfld float32 EnemyManager::_berserkTime
L_0049: ldarg.0
L_004a: ldc.i4.0
L_004b: stfld int32 EnemyManager::_FieldJobType
L_0050: ldarg.0
L_0051: ldfld class BattleManager EnemyManager::_battleManager
L_0056: ldc.i4.1
L_0057: ldc.i4.1
L_0058: ldc.i4.0
L_0059: ldc.i4.1
L_005a: ldc.i4.0
L_005b: callvirt instance class [mscorlib]System.Collections.Generic.List`1<class CharaBehavior> BattleManager::GetMemberList(valuetype eCharaType, bool, bool, bool, bool)
L_0060: stloc.0
L_0061: ldloc.0
L_0062: callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator`0<!0> [mscorlib]System.Collections.Generic.List`1<class CharaBehavior>::GetEnumerator()
L_0067: stloc.2
L_0068: br L_0095
L_006d: ldloca.s enumerator
L_006f: call instance !0 [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior>::get_Current()
L_0074: stloc.1
L_0075: ldarg.0
L_0076: dup
L_0077: ldfld int32 EnemyManager::_FieldJobType
L_007c: ldc.i4.1
L_007d: ldloc.1
L_007e: ldfld class BattleParam CharaBehavior::_param
L_0083: callvirt instance valuetype JOB_TYPE BattleParam::get_jobType()
L_0088: ldc.i4.s 0x1f
L_008a: and
L_008b: ldc.i4.s 0x1f
L_008d: and
L_008e: shl
L_008f: or
L_0090: stfld int32 EnemyManager::_FieldJobType
L_0095: ldloca.s enumerator
L_0097: call instance bool [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior>::MoveNext()
L_009c: brtrue L_006d
L_00a1: leave L_00b2
L_00a6: ldloc.2
L_00a7: box [mscorlib]System.Collections.Generic.List`1/Enumerator`0<class CharaBehavior>
L_00ac: callvirt instance void [mscorlib]System.IDisposable::Dispose()
L_00b1: endfinally
L_00b2: ret
.try L_0068 to L_00a6 finally handler L_00a6 to L_00b2
}
完全不知道該怎麼辦了?。。。。你說的這個看不太明白,而且也沒有找到你說的這個ldc.i4.s這個……這個紅色的Battle在下面的IL裏面對應的是哪個啊?怎麼才能改成Empty.... |