InjectFix icon indicating copy to clipboard operation
InjectFix copied to clipboard

用的最新版injectfix inject的时候报错

Open Shiling1234 opened this issue 4 years ago • 0 comments

报错信息如下: at IFix.CodeTranslator.getMethodId (Mono.Cecil.MethodReference callee, Mono.Cecil.MethodDefinition caller, System.Boolean isCallvirt, System.Boolean directCallVirtual, IFix.CodeTranslator+InjectType callerInjectType) [0x01270] in C:\Users\Administrator\Documents\GitHub\InjectFix\Source\VSProj\Src\Tools\CodeTranslator.cs:1631 UnityEngine.Debug:Log(Object) IFix.Editor.IFixEditor:CallIFix(List`1) (at Assets/IFix/Editor/ILFixEditor.cs:136) IFix.Editor.IFixEditor:InjectAssembly(String) (at Assets/IFix/Editor/ILFixEditor.cs:308) IFix.Editor.IFixEditor:InjectAllAssemblys() (at Assets/IFix/Editor/ILFixEditor.cs:328) IFix.Editor.IFixEditor:InjectAssemblys() (at Assets/IFix/Editor/ILFixEditor.cs:158)

我在代码里把log打到文件里详细信息是这样子: can not find the proxy for System.Int32 UIWidget::get_minWidth(), in UILabel

这是NGUI代码,看起来是调用了父类方法,代码如下,有base.的部分 ,当前类并没有重写minWidth,然后我发现 把base.minWidth前的base去掉,直接写minWidth,此时inject就不会报错了。 public override void MakePixelPerfect () { if (ambigiousFont != null) { Vector3 pos = cachedTransform.localPosition; pos.x = Mathf.RoundToInt(pos.x); pos.y = Mathf.RoundToInt(pos.y); pos.z = Mathf.RoundToInt(pos.z);

		cachedTransform.localPosition = pos;
		cachedTransform.localScale = Vector3.one;

		if (mOverflow == Overflow.ResizeFreely)
		{
			AssumeNaturalSize();
		}
		else
		{
			int w = width;
			int h = height;

			Overflow over = mOverflow;
			if (over != Overflow.ResizeHeight) mWidth = 100000;
			mHeight = 100000;

			mOverflow = Overflow.ShrinkContent;
			ProcessText(false, true);
			mOverflow = over;

			int minX = Mathf.RoundToInt(mCalculatedSize.x);
			int minY = Mathf.RoundToInt(mCalculatedSize.y);

			minX = Mathf.Max(minX, base.minWidth);
			minY = Mathf.Max(minY, base.minHeight);

			if ((minX & 1) == 1) ++minX;
			if ((minY & 1) == 1) ++minY;

			mWidth = Mathf.Max(w, minX);
			mHeight = Mathf.Max(h, minY);

			MarkAsChanged();
		}
	}
	else base.MakePixelPerfect();
}

Shiling1234 avatar Oct 20 '21 04:10 Shiling1234