关于PS4手柄(DS4)通过蓝牙连接的小问题(Win7,Win10 1703)

前几天修理了一个左模拟摇杆癫痫了的PS4手柄,换掉3D摇杆后问题解决,然后测试手柄时发现了这个神器:DS4Windows http://ds4windows.com/,用usb线连接手柄后可以检测手柄的大部分功能,比如光条(能改颜色哦)、重力感应、加速度等,还可以将PS4手柄模拟成Xbox 360的手柄,完美支持所有可用360手柄的PC游戏。另外,本人非常喜欢这次的DS4手柄改进,第一次拿在手里时就有一种说不出的舒适感(之后就再用PS2、PS3的就感觉有些不爽了,哈哈),再加上这个神器软件的存在,比当年PS3手柄的那个ScpServer要方便的多了!
后来发现神器作者的主页上还提到了可以支持蓝牙,正好手里有个N年前买的一个Broadcom 2046芯片的usb小蓝牙适配器,拿出来试试看无线效果如何,结果,问题来了:用PS+Share键开启DS4的强制配对后,蓝牙设备中可以看到Wireless Controller,连接后就是让确认了一下设备,也没让输什么0000的默认配对码,然后一瞬间手柄的光条从配对状态的短促快闪变成了已连接状态的常亮,然后Win端开始给设备安装驱动,再之后手柄光条灭掉,驱动装好后也没有连接上的无线手柄设备了,单按PS键后,Win端提示有设备请求连接,确认后就又断开了。
阅读全文:»

VS2017安装程序提示”未能加载产品定义”的解决方法

不说废话了,博主遇到这个问题的解决方法是删除”X:\Users\\AppData\Local\Microsoft\VisualStudio\Packages”,然后重新运行安装程序即可。

回避由于Unity3D编辑器播放时编译脚本重加载程序集导致报错卡死等问题

Unity3D有一个叫做”live recompile”的功能,即在编辑器处于播放状态时修改脚本代码或替换托管dll等操作时,当场触发重新编译生成项目脚本assembly,并会进行重新加载操作,然而,这个功能很多时候并不能保证重加载后的代码逻辑依然能正常运行,轻则报错,重则卡死。经过博主测试发现,Unity在重加载assembly后,会清空类实例部分成员变量的值(如在Awake中new出的数组对象等),且不负责还原。最终,为了避免由于此导致的问题,采取了一种回避的手段:通过Editor脚本方式检测是否在播放状态时触发了脚本编译,是的话立即停止播放,代码如下:
阅读全文:»

Unity3D游戏实现微信分享截图功能

Unity3D本身内置了一个截屏并保存为图片的功能:

public static void CaptureScreenshot(string filename, int superSize = 0);

然而,在配合微信做截屏分享的时候,发现这个简单的静态函数并不能顺利实现功能逻辑,关键原因在于这个函数的实现是异步的,也就是说,你想要的截图并不会在这个函数调用后立即生成!尤其是在移动平台上,这个函数的延迟可能更大,而且更悲剧的是:这个函数并没有让调用方知道截图生成ok了的机制,比如回调等,所以,在参考了网上的资料后,还是自己实现了一个截图保存的方法: 阅读全文:»

Android获取未经启动器launcher主题theme修改过的应用图标icon

今天说的这个问题是这样的,在Android App中获取自身或其它某个包名应用的图标时,取到的Drawable并不是实际资源的图标图,而是被启动器或者主题“风格化”后的版本,比如我的一加一的CM13s系统默认主题下启动器中的应用图标会被自动P成这样:

其它如MIUI等也会有类似操作,而无论你是用这样:

getPackageManager().getApplicationIcon(getApplicationInfo());

还是这样:

// Unity应用默认的图标res名叫app_icon,AS会叫ic_launcher,看下manifest中指定的资源ID串就知道了
int iconId = getResources().getIdentifier("app_icon", "drawable", getPackageName());
if (iconId>0) {
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        dIcon = getResources().getDrawable(iconId, getTheme());
    } else {
        dIcon = getResources().getDrawable(iconId);
    }
}

取到的都会是修改后的图标图,那么如何取得apk中的原版图标图片呢?答案在此(感谢伟大的google及stackoverflow!):
阅读全文:»

多说难民的畅言搬家过程[附wordpress评论转换畅言json格式脚本]

本博客在很早以前就启用了多说社交评论功能,这么多年虽然不能说很完美吧,但在同类产品中多说已经算是做的相当不错的了。但从大概这周1开始,多说后台开始出现大量垃圾评论,其量之大真是这些年从来没有过的!(之前虽然也有垃圾评论,但也就极偶尔的1-2条而已,而且看了下网站访问统计,也没有大量的PV,明显是直接刷的多说评论接口),最后实在无法忍受,开启了所有评论的审核机制,即使这样,后台还是会定时出现大量的新垃圾评论。去多说官方论坛看了下,发现也没人提,官方也没反应,而且看论坛上的消息貌似是已经放弃治疗了,果不其然在前天,多说官方放出了即将关闭多说项目的通知:http://dev.duoshuo.com/threads/58d1169ae293b89a20c57241。其实之前也曾一度想从多说转移到其他的社交评论系统,但几番对比后,发现多说还是有较绝对的优势的,这回却是不得不搬家了!
阅读全文:»

用Chrome看Youtube视频高分辨率60fps时卡顿、丢帧问题的解决方法

在博主的Core 2 Duo老爷机上看Youtube高清60fps视频时会出现明显的丢帧情况,通过视频详细信息(stats for nerds)可以看到1080p 60fps时dropped frames不断增长,同时cpu占用率双框齐满,很明显这html5视频播放器并没有使用硬件解码视频!开始以为是Chrome本身设置问题,开关了下硬件加速相关选项,重启再试问题依旧。后来搜索了一下发现貌似是由于Chrome本身的什么原因(很多人说firefox和高版本IE都没问题),导致Youtube发送的视频是vp8、vp9编码格式的(同样在详细信息中可查到),而这两种格式是不支持硬件解码的,所以既占满了CPU,又疯狂丢帧!
于是,解决这个问题的方法就是想办法让Youtube传输可以硬件解码的视频格式,所幸有人提供了这样的Chrome插件:h264ify: https://chrome.google.com/webstore/detail/h264ify/aleakchihdccplidncghkekgioiakgal,安装上以后再开Youtube视频就会发现发来的是avc编码格式的数据了,同时CPU占用骤减,丢帧现象明显改善。

64位Unity集成亲加(gotye)即时通讯SDK时的editor动态库设置DllNotFoundException

最近在测试亲加的语音聊天SDK(版本:gotyeapi_ex_v3.0_20170121_u3d.zip),由于直接提供了Unity版本的插件实现,简化了用Unity引擎开发的App集成时的难度,尤其还提供了Windows平台的实现,可在Editor环境下直接测试大部分功能,这是大部分平台相关SDK所不具备的!在实际测试中,发现了一些官方文档中没有说明的小问题,特记录于此。
首先,下载的zip并没有像官方文档中描述的一样,只有一个unitypackage,这点影响不大,直接解开zip中的内容,复制所有cs文件到项目中即可,后面根据官方文档上的指引,windows平台需要将对应32位或64位版本的Plugins中的dll复制到Unity安装路径的Editor下,也就是Unity编辑器执行文件所在的位置。这点要注意并不是常规的项目中的Plugins路径!操作完成后,项目中加入初始化代码,然后运行,出现了官方文档中提到的“win64下的U3D的DLL找不到”的问题:

DllNotFoundException: gotyeapi
gotye.GotyeAPI..ctor () (at Assets/gotye/GotyeAPI.cs:52)
(wrapper remoting-invoke-with-check) gotye.GotyeAPI:.ctor ()
gotye.GotyeAPI.GetInstance () (at Assets/gotye/GotyeAPI.cs:122)

阅读全文:»

64位Win8下安装TL-WN322G+ V1.0驱动

TLWN322G+V1

驱动文件:http://www.k-res.net/dl/TLWN322GPV1.rar(已失效,有需要的朋友请留言吧)

压缩包中包含的是网上找到的64位win7驱动TP-Link官方早已放弃对此款无线网卡的支持,只有最新版本的3.0等才有官方支持win8的驱动,另外包中还包含使用同样芯片的ATHEROS AR5007UG 32/64位驱动,标称支持Win8,有兴趣的朋友也可以试试(Win8插上TL-WN322G+V1后自动搜索驱动就会被识别为这款!)

下面说下安装原版WN322G+时的一个小问题:直接从设备管理器中更新无法识别的黄叹号USB 2.0 WLAN设备的驱动时会提示“哈希值不在指定的目录文件中”,开始以为是64bit Win7的驱动已经无法在Win8使用,折腾了很久后发现其实是Win8的一个驱动验证机制导致的,好在通过特殊启动方式可以关闭,方法如参考文章中所示:

阅读全文:»

使用StartSSL的免费SSL证书为Windows远程桌面RDS服务指定受信任的证书

首先,简单说明一下这个大标题所要解决的问题,就是这个:
QQ截图20150807221006
经常使用Windows远程桌面(AKA: mstsc3389RDP…)的朋友对这个截图的画面一定不会感到陌生,记不清从哪个版本开始的,迈克尔索芙特公司为这个远程桌面服务加入了SSL (TLS 1.0)加密功能,而且是默认开启的,这就导致了这个连接时需要“验明正身”的过程。而正式可信的SSL证书都是需要缴纳一定的“保护费”来获得的,安全级别越高,费用也就越高,所以这里默认启用的加密证书是以自签名的方式颁发的,因此自然会弹出这个不可信的警告了。
对于一般用户而言,这个不可信的证书其实也没什么大不了的,无视它,在mstsc里关闭服务器身份验证失败警告,信任它,直接添加自己为可信的证书颁发机构,又或者直接在组策略里关掉加密,都可以直接pass掉这个问题,但如果是正规应用的话(或者是像我这样有强迫症的一般用户),当然还是要加上正规身份证的好了。
这里介绍的方法就是如何用当下提供免费SSL证书的StartSSL.com,为Windows RDS(主要针对非服务器版操作系统)添加一个受信的正规远程桌面RDS服务加密证书:
阅读全文:»