- 博客(17)
- 资源 (6)
- 收藏
- 关注
原创 关于Fatal Error in GC : Too Many threads
之前写的某个程序在一台机子上测试一直出现这个问题,换一台则不会出现。也查不出是什么原因。开始以为是电脑问题,后来发现在网络好的地方就不会出现,网络差的地方则经常出现。在翻代码的时候发现有一个StartCoroutine写在了Update中,其中调用了WWW类,每调用一次Update就会开一个线程调用WWW,在网络好的情况下WWW可以及时返回,不会出现过多的线程,一旦网络情况比较糟糕,这边一直在开线程
2015-06-19 17:08:40 7275
原创 关于Unity Plugins文件夹
如果Plugins文件夹中存在”Plugins/x86”和”Plugins/x86_64”这两个文件夹,则dll必须放入这两个文件夹中,否则会出现找不到dll的情况
2015-06-08 14:51:05 11703 1
原创 Unity截图的三种方式
1.最常见的一种方式IEnumerator CaputreScreen(){ yield return new WaitForEndOfFrame(); texture.ReadPixels(new Rect(0, 0, width, height), 0, 0); texture.Apply();}该方法可以截取一个矩形框内的图像,缺点是需要等待一帧结束才可以读取到图像
2015-06-04 18:34:54 1553
原创 Unity自定义定时器
自己写的一个Timer,绑定到一个prefab上,使用时直接Instantaite,要用几个就Instantiate几个,非常方便using UnityEngine;using System.Collections;public class Timer : MonoBehaviour{ private float _time; private float _lastTime;
2015-06-03 18:00:38 694
原创 VS2013下在C#中调试C++ dll
dll项目,属性-配置属性-调试-把 命令 为 调用该dll的exe工程的bin\Debug*.exe dll项目,属性-配置属性-调试-把 调试器类型 设置为 仅限本机 dll项目,属性-配置属性-常规-把输出目录设置为 调用该dll的exe工程的bin\Debug目录下 在dll项目中打好断点,然后重新生成dll,输出dll到设置的目录下exe项目,属性-调试-启用本机代码调试 exe项
2015-05-25 14:26:28 2250 2
原创 关于P/Invoke(3)
在调用dll时,我们可能会遇到需要调用像printf之类的可变参数的方法,我们可以使用__arglist关键字来传入可变参数:[DllImport("msvcrt.dll", CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]extern static int printf(string format, __arglis
2015-05-25 11:32:38 387
原创 关于P/Invoke(2)
可以使用 __declspec(dllexport) 关键字从 DLL 导出数据、函数、类或类成员函数 当尝试导出 C++ 修饰函数名时,这种便利最明显。 由于对名称修饰没有标准规范,因此导出函数的名称在不同的编译器版本中可能有所变化。 如果使用 __declspec(dllexport),仅当解决任何命名约定更改时才必须重新编译 DLL 和依赖 .exe 文件。 若要导出函数,__declsp
2015-05-25 10:58:12 492
原创 关于P/Invoke(1)
之前封装c++dll时总是出现”对 P/Invoke 函数的调用导致堆栈不对称。原因可能是托管的 P/Invoke 签名与非托管的目标签名不匹配”的问题,后来发现原来c/c++使用的是cdecl方式调用,而c#默认使用的是stdcall的方式来调用非托管代码,所以我们在调用native c++ dll的时候需要加上CallingConvention=CallingConvention.Cdecl来指
2015-05-25 10:43:17 564
原创 Unity Texture2D缩放
Texture2D ScaleTexture(Texture2D source, int targetWidth, int targetHeight) { Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, false); float incX = (1.0f /
2015-05-14 09:14:45 11188 3
原创 Unity将RenderTexture转化为Texture2D
RenderTexture和Texture2D同样继承于Texture,两者都可以和Texture之间相互转化,但是两者之间却不能简单的进行强制转换,我们可以通过以下方式将RenderTexture转化为Texture2D:int width = renderTexture.width;int height = renderTexture.height;Texture2D texture2D =
2015-04-30 16:22:57 10209
原创 c#抽象类和接口
接口中所有的方法隐含的都是抽象的。而抽象类则可以同时包含抽象和非抽象的方法。类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。
2015-04-24 13:56:47 547
原创 c#virtual,abstract,new,override
在c#中使用virtual关键字告诉子类该方法可以被覆盖,在子类中使用override进行重写。 在子类中不使用override关键字重写基类同名方法,编译器默认添加new关键字。 new关键字可以在子类中隐藏基类方法,而virtual关键字在整个继承链中覆盖掉基类方法。 使用virtual关键字的方法必须有实现,而abstract方法不能有实现且在子类中没有使用abstract就必须实现该方
2015-04-24 11:13:48 438
原创 多维数组到一维数组转化
OK, so you know how to go from the 1-dimensional case to the 2-dimensional case.A 1-D array looks like this:int [5] :+-----+-----+-----+-----+-----+| 0 | 1 | 2 | 3 | 4 || |
2015-04-03 15:10:28 542
转载 Unity使用OpenCvSharp进行人脸识别
using UnityEngine;using System.Collections;using OpenCvSharp.CPlusPlus;using OpenCvSharp;using System;public class FaceDetection : MonoBehaviour{ public int Width = 640; public int Hei
2015-01-19 17:38:15 10238 2
原创 Unity定时器
在Unity中可以通过Invoke,InvokeRepeating来实现定时器功能Invoke("FunName", 2.0f); //2秒后调用FunName函数Invoke//2秒后每过1秒调用一次void CancelInvoke(); //取消所有的Invokevoid CancelInvoke(string methodName); //取消
2014-10-17 14:52:38 646
原创 Cocos2d-x 通过虚拟按键控制人物移动
玩过手机RPG的同学都知道,游戏中人物的移动一般都是通过触摸屏上的虚拟按键来实现,那么究竟是怎么实现的呢,我们来做一个简单的测试。这里并没有按照其他Blog的实现来讲解,仅仅是通过我自己的想法。为了方便起见,我并没有新建其他类,只是在新建程序的HelloWorld中来实现。头文件: cocos2d::CCSprite* player; cocos2d::CCPo
2013-04-02 21:50:38 4315
grub2基础教程
2011-11-30
vim帮助手册
2011-11-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人