InjectFix icon indicating copy to clipboard operation
InjectFix copied to clipboard

新加类后,使用新类数组报错Unhandled Exception:System.Exception: RenderDepthInfo is new class, cannot be treated as extern type

Open mycks opened this issue 3 years ago • 1 comments

[IFix.Interpret] public class RenderDepthInfo { public Renderer renderer; public Material[] Materials;

public void Init(Renderer rend)
{
    renderer = rend;
    Materials = renderer.materials;
}

}

[IFix.Interpret] public class RenderDepthArray { public RenderDepthInfo[] renders;

public void Init(List<Renderer> allRends)
{
    renders = new RenderDepthInfo[allRends.Count];
    for (int i = 0; i < allRends.Count; i++)
    {
        if (allRends[i] != null)
        {
            renders[i] = new RenderDepthInfo();
            renders[i].Init(allRends[i]);
        }
    }
}

}

public class Test: MonoBehaviour {

public List<Renderer> allRends = new List<Renderer>();

[IFix.Interpret] private RenderDepthArray renderDepthArray;

[IFix.Patch]
public void Init()
{
    if (Application.isPlaying)
    {
        renderDepthArray = new RenderDepthArray();
        renderDepthArray.Init(allRends);
    }
}

}

mycks avatar Sep 28 '21 12:09 mycks

Unhandled Exception:System.Exception: RenderDepthInfo is new class, cannot be treated as extern type at IFix.CodeTranslator.getMethodId (Mono.Cecil.MethodReference callee, Mono.Cecil.MethodDefinition caller, System.Boolean isCallvirt, System.Boolean directCallVirtual, IFix.CodeTranslator+InjectType callerInjectType) [0x01dad] in C:\Users\Administrator\Downloads\InjectFix-master (2)\InjectFix-master\Source\VSProj\Src\Tools\CodeTranslator.cs:1933 at IFix.CodeTranslator.processMethod (Mono.Cecil.MethodDefinition method) [0x00007] in C:\Users\Administrator\Downloads\InjectFix-master (2)\InjectFix-master\Source\VSProj\Src\Tools\CodeTranslator.cs:602 at IFix.CodeTranslator.Process (Mono.Cecil.AssemblyDefinition assembly, Mono.Cecil.AssemblyDefinition ilfixAassembly, IFix.GenerateConfigure configure, IFix.ProcessMode mode) [0x0036d] in C:\Users\Administrator\Downloads\InjectFix-master (2)\InjectFix-master\Source\VSProj\Src\Tools\CodeTranslator.cs:3424 at IFix.Program.Main (System.String[] args) [0x001e7] in C:\Users\Administrator\Downloads\InjectFix-master (2)\InjectFix-master\Source\VSProj\Src\Tools\CSFix.cs:118

mycks avatar Sep 28 '21 12:09 mycks