Я получаю эту ошибку времени выполнения: InvalidProgramException: Invalid IL code
. Я использую единство 5.3.1f1. Проект является расширением редактора. Упрощенная версия кода:InvalidProgramException: Недействительный код IL при вызове метода
public unsafe class PPAGraph
{
PaddedImage downSampleImage;
int downSampleRate;
internal void Calculate(PaddedImage sourceImage)
{
sourceImage.DownSample(downSampleImage, downSampleRate);
}
Эта ошибка возникает в этой строке.
InvalidProgramException: Invalid IL code in Assets.UPlus.TerrEngine.PaddedImage:DownSample (Assets.UPlus.TerrEngine.PaddedImage,int): IL_00a9: stloc.s 15
Assets.UPlus.TerrEngine.PPAGraph.Calculate (Assets.UPlus.TerrEngine.PaddedImage sourceImage, Boolean isRidge, Boolean sketch, Int32 plength, Int32 portion) (at Assets/UPlus/TerrEngine/Engine/PPA/PPAGraph.cs:1311) Assets.UPlus.Utils.TerraGodContext.CalcSketchPpa (Assets.UPlus.TerrEngine.PaddedImage sketchImg, Int32 sketchDownSampleRate) (at Assets/UPlus/TerrEngine/UnityEngine/TerraGodContext.cs:70) EditorExtensions.Editor.TerrainGodMainPanel.CreatePanel() (at Assets/UPlus/TerrEngine/Engine/Editor/TerrainGODMainPanel.cs:45) EditorExtensions.Editor.TerrainGODWindow.OnGUI() (at Assets/UPlus/TerrEngine/Engine/Editor/TerrainGODWindow.cs:39) System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs:222)
Метод Downsample является:
public void DownSample(PaddedImage downSampImg, int downsampleRate)
{
int dsW = downSampImg.Width;
int dsH = downSampImg.Height;
float* dsPix = downSampImg.Pixels,padDSPix=downSampImg.PaddedPixels;
int pad = Padding;
int twoPad = pad + pad;
float* rowMyPix = PaddedPixels;
rowMyPix += pad*PaddedWidth + pad;
float* myPix;
int yStep = downsampleRate * PaddedWidth;
int dsPad = downSampImg.Padding;
int twoDSPad = dsPad + dsPad;
padDSPix += downSampImg.PaddedWidth*dsPad + dsPad;
if (downSampImg.PixelsPtr != IntPtr.Zero)
{
for (int y = 0; y < dsH; y++)
{
myPix = rowMyPix;
for (int x = 0; x < dsW; x++)
{
*padDSPix++ = *dsPix++ = *myPix;
myPix += downsampleRate;
}
padDSPix += twoDSPad;
rowMyPix += yStep;
}
}
else
{
for (int y = 0; y < dsH; y++)
{
myPix = rowMyPix;
for (int x = 0; x < dsW; x++)
{
*padDSPix++ = *dsPix++ = *myPix;
myPix += downsampleRate;
}
padDSPix += twoDSPad;
rowMyPix += yStep;
}
}
}
Вы используете Unity с Mono в Linux? –
Нет, это на окнах 7. Проект был прекрасен, но после некоторых изменений кода, а также с понижением моей визуальной студии до 2013 года и переходом к 9, появилась ошибка. Я не знаю, изменился ли код там, где была причина, или если это было понижение. Затем я установил vs 2015 и снова resharper 10, и ошибка осталась. Попробовал пару версий unityvs и даже установил свежие окна. И сделал пакет из проекта, и создал другой проект и импортировал пакет. Это также не решило проблему. –
Мне интересно, из-за 'at/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Reflection/MonoMethod.cs' –