zoukankan      html  css  js  c++  java
  • XLua与CSharp交互的采坑点 : 热修复返回值为 Int 的CSharp方法

    1、假如CS的一个类中有如下逻辑: 

     1 using System.Collections;
     2 using System.Collections.Generic;
     3 using UnityEngine;
     4 using XLua;
     5 
     6 namespace LGSTEST
     7 {
     8     public class Lgs : MonoBehaviour
     9     {
    10         void Update()
    11         {
    12             if (Input.GetMouseButtonDown(0))
    13             {
    14                 Debug.Log(GetIndex(15, 10));
    15             }
    16         }
    17 
    18         int GetIndex(int num1,int num2)
    19         {
    20             return num1 / num2;
    21         }
    22     }
    23 }

    现在有一个需求是:通过Xlua来更换CSharp中的 GetIndex 方法:XLua中的代码如下:

    1  xlua.hotfix(CS.LGSTEST.Lgs, "GetIndex", function(this, num1, num2)
    2     return num1 / num2 
    3 end)

    有没有感觉简单?但是这样输出的结果是多少呢?实参 num1 = 15 , num2 = 10 ,按照我们的理解打印的结果应该是 1,但是事实是这样的吗?打印看看即可知道,结果如下:

    没错,你没有看错,结果就是 0.具体原因是什么,其实我也不知道,我只知道怎么改,正确Xlua代码如下:

    1  xlua.hotfix(CS.LGSTEST.Lgs, "GetIndex", function(this, num1, num2)
    2     return math.floor(num1 / num2) 
    3 end)

    现在的打印结果如下:

  • 相关阅读:
    数据类型
    一些骚操作
    re
    多任务
    监听按钮点击事件
    监听按钮点击事件
    监听按钮点击事件
    将博客搬至博客园
    将博客搬至博客园
    将博客搬至博客园
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/9890798.html
Copyright © 2011-2022 走看看