MacBook左侧USB失灵解决方案

MacBook Pro的左侧USB突然不能用了,右侧的USB还正常,但是很不方便,网上查了资料,通过以下方法解决了。

  1. 重置 Mac 上的 NVRAM(Apple官网教程)
  2. 重置 Mac 上的系统管理控制器 (SMC) (Apple官网教程)

通过以上方法,问题解决了,具体是哪个方法生效的,还不确定,看介绍应该是第二个。 如果你的Mac也出现了类似问题,不妨先试试,说不定能省个几百块的维修费。

Unity判断周围是否有敌人

只攻击正前方的单位,向前发射一条射线,攻击碰到的单位

RaycastHit hit;
//range 射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位
if(Physics.Raycast(unit.thisT.position, unit.thisT.forward, out hit, range, maskTarget)){
Unit targetTemp=hit.collider.gameObject.GetComponent();
if(targetTemp!=null && targetTemp.HPAttribute.HP>0){
target=targetTemp;
if(attackMode==_AttackMode.StopNAttack){
if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();
unit.StopMoving();
}
}
}

以己方单位为圆心的某一半径长度内

//返回相交球的所有碰撞体
Collider[] cols=Physics.OverlapSphere(unit.thisT.position, range, maskTarget);
//if(cols!=null && cols.Length>0) Debug.Log(cols[0]);
if(cols.Length>0){
Collider currentCollider=cols[Random.Range(0, cols.Length)];
Unit targetTemp=currentCollider.gameObject.GetComponent();
if(targetTemp!=null && targetTemp.HPAttribute.HP>0){
target=targetTemp;
if(attackMode==_AttackMode.StopNAttack){
if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();
unit.StopMoving();
}
}
}

以己方单位为圆心的扇形范围内

Collider[] cols=Physics.OverlapSphere(unit.thisT.position, range, maskTarget);
//if(cols!=null && cols.Length>0) Debug.Log(cols[0]);
if(cols.Length>0){
Collider currentCollider=cols[0];
foreach(Collider col in cols){
Quaternion targetRot=Quaternion.LookRotation(col.transform.position-unit.thisT.position);
if(Quaternion.Angle(targetRot, unit.thisT.rotation)
Unit targetTemp=currentCollider.gameObject.GetComponent();
if(targetTemp!=null && targetTemp.HPAttribute.HP>0){
target=targetTemp;
if(attackMode==_AttackMode.StopNAttack){
if(attackMethod!=_AttackMethod.Melee) unit.StopAnimation();
unit.StopMoving();
}
break;
}
}
}
}

react-native入门篇之环境搭建

React Native是Facebook开源的,在Javascript和React的基础上构建原生的Android和IOS应用的平台。 React Native着力于提高多平台的开发效率,Learn once,write anywhere

环境要求

最新的OS X系统 ,要开发IOS 应用就必须使用Mac OS系统。 Homebrew:安装教程 http://brew.sh/ ,Mac上的包管理软件 Node.js : https://nodejs.org/en/ watchman:https://facebook.github.io/watchman/docs/install.html facebook的开源的一个文件监视系统。 flow:http://flowtype.org/ facebook开源的一个JavaScript静态检查工具

安装

安装Homebrew:

1
/usr/bin/ruby -e "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"

使用Homebrew安装node.js:

brew install node

安装watchman:

brew install watchman

安装flow :

brew install flow

更新

如果已经安转了以上的软件,需要更新到当前最新版本。 首先更新Homebrew的版本库:

brew update

更新Homebrew库的内容:

brew upgrade

清除不再使用的资源:

brew cleanup

安装react-native

npm是nodejs的包管理,使用npm可以安装nodejs的包,react-native也是nodejs的一个包。 使用npm安装react-native:

npm install -g react-native

安装react-native命令行工具:

npm install -g react-native-cli

运行命令:

react-native -v

得到结果:

1
2
react-native-cli: 1.0.0
react-native: 0.20.0

react-native安装成功

第一个react-native项目

新建第一个react-native项目

react-native init HelloRN

1
2
3
4
5
6
7
8
9
10
o run your app on iOS:
cd /Users/***/Documents/github/react-native/HelloRN
react-native run-ios
- or -
Open /Users/***/Documents/github/react-native/HelloRN/ios/HelloRN.xcodeproj in Xcode
Hit the Run button
To run your app on Android:
Have an Android emulator running (quickest way to get started), or a device connected
cd /Users/***/Documents/github/react-native/HelloRN
react-native run-android

运行ios:

react-native run-ios

在当前目录下面多了一个ios的目录,里面新建一个project,HelloRN的项目。 运行Android

react-native run-android

在当前目录下会多出一个anroid的目录,里面是android项目的文件。 运行react-native项目的时候首先会使用react-native start启动一个端口为8081的服务,用来提供JavaScript代码。 原文链接:https://segmentfault.com/a/1190000004477951

Unity导出Android项目报错:Unable to list target platforms.

由于sdk升级到26,所以在Unity5.3.6导出Android项目时,报错如下:

Error building Player: CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details. /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir=”/Users/nestordu/Library/Android/sdk/tools” -Dfile.encoding=UTF8 -jar “/Applications/Unity5.3.6p2/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar” - stderr[ Error:Invalid command android ] stdout[ ]

导出项目时,调用了Android的SDK的tools下的命令,因为从25升级到26变化较大,所以命令不可用了“Invalid command android”。 解决方式如下: 方法1(直接删掉tools,下载25.2.5版本)

1
2
3
4
cd $ANDROID_HOME #切换到android sdk目录下
rm -rf tools #删除tools
wget http://dl.google.com/android/repository/tools_r25.2.5-ma‌​cosx.zip #下载
unzip tools_r25.2.5-macosx.zip #解压

方法2(通过sdkmanager的命令来降低版本,此方法未验证)

cd $ANDROID_HOME/sdk/tools/bin
sdkmanager –uninstall “tool;android-26”
sdkmanager –install “tool;android-25”
命令参考:https://developer.android.com/studio/command-line/sdkmanager.html

Mac下Android Library工程使用gradle生成jar包

在开发sdk生成jar在eclipse里相对比较容易操作,只要导出class时指定哪里导出就可以,但在用AndroidStudio开发时要导出jar就没那么容易,需要写gradle脚本,但gradle脚本的入门成本还是比较高,网上也有打包jar的脚本参考,但大多是通过生成classes.jar重命名来生成,这样生成的jar是包含工程里所有类的,有时我们需要指定一些包和类来生成jar。

创建Android Library工程:菜单导航到 File -> New -> New Module … ,选择 Android Library,包名(com.sqstudio.test)。在gradle中加入以下脚本:

task clearJar(type: Delete) {
delete ‘libs/sdk.jar’
}
task makeJar(type:org.gradle.api.tasks.bundling.Jar) {
//指定生成的jar名
baseName ‘sdk’
//从哪里打包class文件
from(‘build/intermediates/classes/debug/com/sqstudio/test’)
//打包到jar后的目录结构
into(‘com/sqstudio/test/‘)     //去掉不需要打包的目录和文件
exclude(‘BuildConfig.class’, ‘R.class’)
//去掉R$开头的文件
exclude{ it.name.startsWith(‘R$’);}
}
makeJar.dependsOn(clearJar, build)

在build.gradle写上后,只要在命令行执行gradle makeJar就可以在build/libs目录下找到这个jar包。 如果gradle执行失败,需检查环境配置(首次使用,会下载安装相关资源,需要等待)

vim ~/.bash_profile 然后加入:
GRADLE_HOME=/Applications/Android\ Studio.app/Contents/gradle/gradle-3.2;
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin

上面是个简单的例子,只能打包某个包下面的所有文件,如果要实现只打某个包下面的某些子包或者文件可参考如下示例:

task makeSdkJar(type:org.gradle.api.tasks.bundling.Jar) {
    baseName ‘pluginsdk’
    //只打包org.cmdmac下的org.cmdmac.pluginsdk.impl和org.cmdmac.gamecenter,其他子包不会被打包进去
    from(‘build/intermediates/classes/debug/org/cmdmac/‘) {
        include ‘pluginsdk/impl’
        include ‘gamecenter’
    }
    into(‘org/cmdmac/‘)
//    exclude(‘R.class’)
//    exclude{ it.name.startsWith(‘R$’);}
}

  参考资料:http://www.alloyteam.com/2015/03/shi-yong-gradle-da-bao-zhi-ding-bao-ming-he-lei-di-jar/