C# 这边 new 了一个GameObject 对象并发给Lua那边, 这时C# 这边在通过GC释放掉这个对象;lua 那边会报错;遇到这种问题的两种方式 解决方案:

1.lua一个 sprite对象如果被引擎释放了,那引用它的变量怎么不是nil
    每一个lua引用的GameObject都有独立的 引用索引,当 lua的 对象的生命周期结束, 调用 原方法 _gc,会减去 一个引用计数,当这个引用计数为0 的时候会 remove 掉 c# 对象池里面的对象,然后如果这个c# 就没有了lua的引用,而如果也失去了 c#的引用,就会触发 c# 的GC,C#端主动Destroy的GameObject不会索引到lua这边来释放lua部分的“代理”内存,2边的gc各自管理自己的内存.

tolua有个tolua.isnull专门来判断这个情况,tolua.isnull则是绕过proxy数据,查看源数据是否为空

tolua的方案是,lua并不会尝试跨语言去管理C#的内存,他只是简单的“钉住”C#的某一个内存,自己gc完毕后,释放对某段C#内存的引用,至于释放掉引用的C#内存啥时候真正释放,lua不关心,C#gc的事情。
  总得来说:如果遇到C#那边主动Destory并释放GC的话,lua那边在用这个对象时,主动做一下isnull 的验证;验证对象内存是否被销毁

2.逻辑层去处理,用对象管理池,所有创建C#对象都通过管理器去创建,在创建对象时区分由哪边创建的;删除时,必须由创建时的那边去做destroy操作。如果在写逻辑时Lua把对象传给了C#,那么lua在调用Destroy时,必须先要确保C#的指向Clear。反之C#把对象传给Lua 也一样

以上属于个人观点,如果理解有误,欢迎留言讨论.....大家共同进步

unity lua C# 这边 new 了一个GameObject 对象并发给Lua那边, 这时C# 这边在通过GC释放掉这个对象;lua 那边会报错;遇到这种问题的解决方案相关推荐

  1. python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案

    本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...

  2. ajax jsonp请求报错not a function的解决方案

    ajax jsonp请求报错not a function的解决方案 参考文章: (1)ajax jsonp请求报错not a function的解决方案 (2)https://www.cnblogs. ...

  3. npm install 报错:ERR! code EINTEGRITY 解决方案

    npm install 报错:ERR! code EINTEGRITY 解决方案 参考文章: (1)npm install 报错:ERR! code EINTEGRITY 解决方案 (2)https: ...

  4. vagrant up报错 Warning: Authentication failure. Retrying...解决方案

    vagrant up报错 Warning: Authentication failure. Retrying...解决方案 参考文章: (1)vagrant up报错 Warning: Authent ...

  5. mysql group by 报错 ,only_full_group_by 三种解决方案

    mysql group by 报错 ,only_full_group_by 三种解决方案 参考文章: (1)mysql group by 报错 ,only_full_group_by 三种解决方案 ( ...

  6. IDLE打开Python报错 api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案

    IDLE打开Python报错 api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案 参考文章: (1)IDLE打开Python报错 api-ms-win-crt-runtim ...

  7. webpack 报错 No PostCSS Config found 解决方案。

    webpack 报错 No PostCSS Config found 解决方案. 参考文章: (1)webpack 报错 No PostCSS Config found 解决方案. (2)https: ...

  8. java 安装报错2503,Windows运维之Win10安装msi程序报错2503和2502错误解决方案

    本文主要向大家介绍了Windows运维之Win10安装msi程序报错2503和2502错误解决方案,通过具体的内容向大家展现,希望对大家学习Windows运维有所帮助. 刚升级了系统到win10,重新 ...

  9. Win10安装msi程序报错2503和2502错误解决方案

    Win10安装msi程序报错2503和2502错误解决方案 参考文章: (1)Win10安装msi程序报错2503和2502错误解决方案 (2)https://www.cnblogs.com/drea ...

最新文章

  1. ISA Server 2006 安全保障指南
  2. 第八届蓝桥杯省赛第二题---等差素数列
  3. Windows Internals 笔记——关联性
  4. 【笔记】jstree插件的基本使用
  5. AgileEAS.NET平台开发实例-药店系统-报表开发(高级篇)
  6. 1053 住房空置率 (20 分)
  7. CentOS 5.5下搭建部署独立SVN服务器全程详解
  8. java xml 画表格_用js+xml自动生成表格的东西
  9. 如何从asio::udp::socket()中取出底层sockfd整数
  10. TCP四次握手连接释放
  11. 工作总结 @{var sas = String.Format({0:yyyy-MM-dd}, Model.DemandTime.GetValueOrDefault());}
  12. 使用python读取txt坐标文件生成挖空地块_批量
  13. 更新更新,小白学面向对象方法,研一课程,附带补充C++知识
  14. 乐动体育推荐:9款最佳编程字体
  15. BackTrack5(BT5)安装教程及BT5支持网卡列表
  16. 硬盘安装RedHat9.0心得(转)
  17. 三款较好的代码比较工具Beyond compare、DiffMerge、WinMerge
  18. 摄像头和机械臂的手眼标定
  19. 【Python】UnicodeDecodeError: 'gbk' codec can't decode byte 0xfe
  20. 名帖311 成亲王 行书《杜甫秋兴诗》

热门文章

  1. win7系统调用tts的语音朗读功能
  2. 【打卡】21天学习挑战赛—RK3399平台开发入门到精通-day9
  3. 开发ODBC驱动代码
  4. 2018 蓝桥杯省赛 B 组模拟赛(一)-U型数字
  5. python实训报告50000_Python实训周总结
  6. 《现代命令行工具指南》10. 管理工具:在隔离环境中安装和运行 Python 命令行工具 - Pipx
  7. 计算多项式的值——基于C语言程序
  8. 软件工程方法论对开发的有多大用?
  9. LUNA16数据集简介
  10. oracle创建dba,oracle创建一个DBA用户