自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 问答 (1)
  • 收藏
  • 关注

转载 堆排序

参考:博客

2018-02-23 16:27:10 230

原创 U3D -- 关于GameObject的GetInstanceID()和GetHashCode()

这两个方法都是获取游戏对象的唯一ID标识。在做对象缓存池时,可以用到。有几个值得注意的地方:1、同一个Prefab,不管是Inspector挂上去的还是用Resource.Load()动态加载的,这个ID都是一样的。只有当Instantiate成对象之后,每个对象间的ID才会有区别。2.、不同的Prefab,ID是不一样的。经过测试,两个方法

2017-12-06 15:14:00 12647 2

原创 设计模式 -- 组合模式的一次运用实践

使用场景    在公司游戏项目中,有多种游戏模式,主要分为PVP和PVE。在PVE模式下面又细分为PVECloneBattle、PVEGuildBossBattle等等。在PVP模式下又分为AsyncPVP、FakePVP等。每种具体的游戏模式都有一套自己的初始化流程,之前是用的If else的方法暴力判断,然后调用各自的初始化函数。这段时间游戏开发任务较轻,决定重构这部分内容。    经

2017-06-08 10:58:03 538

转载 U3D -- 关于帧同步的一些文章

帧同步基础:这里RTS的网络同步:这里状态同步和帧同步的比较:这里

2017-06-07 18:12:10 1017

原创 U3D -- 图集分割和使用

如上图,美术出了类似这样的图集。导入工程后,可以用UGUI的自动分割,来切成小图1.设置Texture Type主要是Texture Type设为Sprite(2D and UI), SpriteMode设为Multiple2.点击Sprite Editor,进入分割界面左上角Slice,选为自动。(如果不满意 也可以手动添加切割框)然后

2017-06-05 17:46:15 983 1

原创 U3D 脚本的执行周期

先上图:一些细节:1.SetActive(false)会让脚本停止Update(),并跳到OnDisable()中。再次SetActive(true)会执行OnEnable。2.awake和start只在第一次被创建的时候调用。

2017-05-09 21:12:31 361

原创 U3D-- U3d Shader的一些知识

NameSyntaxDescriptionabsabs(x)Absolute value (per component).acosacos(x)Returns the arccosine of each component of x.allall(x)Test if all components of x ar

2017-05-05 10:38:29 573

转载 U3D -- UGUI的锚点

推荐博客

2017-05-03 15:31:09 714

原创 U3D--单例基类

/* * 逻辑类继承使用 * 线程安全, double-lock */public class Singleton where T : class, new(){ protected Singleton() {} // C#的析构函数既没有修饰符,也没有参数。 ~Singleton() { m_inst = null; } private static

2017-04-27 10:45:21 422

转载 C#知识点

1.C#的委托:参考博客

2017-04-27 10:43:28 246

转载 数据结构--二叉树的便遍历

参考博客

2017-04-25 17:37:52 241

原创 U3D--理解U3D的协程

首先:Unity里面的协程并不是线程,协程是在unity主线程中运行的,每一帧中处理一次,而并不与主线程并行。这就意味着在协程之间并不存在着所谓线程间的同步和互斥问题。要说协程的不足就是不能运用处理器的多核来提高处理性能,毕竟这个在运行时事实上是在一个线程中执行的。       附上一张协程运行图:协程的跳出由yield return控制,yield retur

2017-04-11 16:26:18 782

原创 AndroidFramework -- Binder中的Bn与Bp

BpXXX、BnXXX同时实现一个接口IXXX。BpXXX主要是用来处理java层传下来的服务请求,然后通过transact将处理请求传给BnXXX(通过binder)首先,定义IXXX接口:class ITestDaemon : public IInterface, public IBinder::DeathRecipient { virtual void init();

2017-03-13 10:26:54 10039 2

原创 U3D -- 一些知识点和优秀博客收藏

1. 场景与工程 Project(工程)与Scene(场景)是不同的概念,一个项目工程可包含多个场景,而每个场景是唯一的。例如通关游戏,项目就是整个游戏,场景就是游戏中的各个关卡。2. 图层的个数    图层的上限是32个,前8个是系统默认的图层,不可更改。3. U3D编辑器的视图 基本视图,包括Project视图、Hierarchy视图、Inspector视图、Game视图和Scene视图。  ...

2017-02-08 11:10:38 3404

原创 Android -- 小试AIDL

1.关于AIDL       AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。设计这门语言的目的是为了实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。2.Demo首先,在AS工程中创建一个.aidl文件,该文件定义了通信接口。// IMyAidlInterface.aidlp

2017-01-13 11:24:56 325

原创 Android---Actionbar的使用

MainActivity.javapublic class MainActivity extends Activity { private ActionBar mActionBar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(

2017-01-06 11:56:01 332

原创 Android -- adb devices找不到设备的解决办法

1.lsusb找到设备的vendorID和productID2.adb_usb.ini添加cd ~/.android目录。~/.android$ sudo gedit adb_usb.ini,打开文件,添加vendorID和productID。3.rules添加cd /etc/udev/rules.d目录。执行sudo gedit ./51-an

2017-01-04 11:17:09 801

转载 android -- 组件化和插件化

1.组件化开发组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件等,但是最终发布的时候是将这些组件合并统一成一个apk,这就是组件化开发。正常一个App中可以有多个module,但是一般只会有一个module是设置为application的,其他均设置为library,组件化开发就是要每个module都可

2016-12-26 15:47:40 681

原创 Android -- wifi与socket

最近项目需求要做一个手机、PC建立wifi连接,并通过socket通信的功能。记录一下相关的代码。1.WifiManager类 mWifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE); mWifiInfo = mWifiManager.getConnec

2016-12-26 11:44:27 892

原创 Android--TabLayout的用法

MD设计风格中,可以用TabLayout + ViewPager + Fragment + TabsFragmentAdapter来实现选项卡界面,如下图:MainActivity代码:public class TabsActivity extends AppCompatActivity { private ViewPager mViewPager = null;

2016-12-09 15:42:10 294

原创 Android--NavigationView的基本用法

NavigationView是基于MD风格的控件,是一种google官方推出导航界面,可以用listView实现同样的效果。NavigationView的使用十分方便,只用写xml即可,最后在activity中监听按键。xml文件: <android.support.design.widget.NavigationView android:id="@+id

2016-12-08 10:15:54 352

原创 Android--DrawerLayout的基本用法

DrawerLayout提供给了一个左右滑动抽屉的效果。一般把DrawerLayout设为根布局,然后分别配置主页面、左抽屉和右抽屉。xml:<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+

2016-12-07 11:26:01 451

原创 Android -- Handler引起的内存泄露及解决办法

用Lint分析时,若使用内部类创建handler,会报内存泄露的问题。造成内存泄露的原因是message和activity的生命周期不一样,当acticvity销毁的时候,message还在消息队列中,导致GC无法进行垃圾回收。Handler mHandler = new Handler() { @Override public void handleMessage(Mes

2016-12-05 17:48:45 335

原创 Android--关于Gradle的一些记录

1.一个project中包含两个gradle(1)project层面的build.gradle// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { jcenter()

2016-11-30 10:38:44 293

原创 Android--关于String.xml中<xliff:g >标签的用法

string.xml中: Chip: %1$s调用时:String mChipType = "milan";getString(R.string.test_chip_name, mChipType);标签介绍: 属性id可以随便命名 属性值举例说明%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 %n$md:代表

2016-11-24 15:04:36 340

原创 Android -- 关于UI卡顿的优化

1.检测OverDraw设置 -> 开发者选项 -> 调试GPU过度绘制 -> 显示GPU过度绘制。打开检测工具,进入待优化的界面,然后根据颜色判断各个view的OverDraw情况。解决方法:一、移除不必要的background设置。     二、对于有部分遮挡覆盖关系的view,使用clipRect在OnDraw方法中绘制。2.减少View的嵌套层次用Hiera

2016-11-07 10:43:42 291

原创 Java--关于编译时、运行时以及构建时

1.final关键字static final int number1 = 5;static final int number2 = 6; static int number3 = 5;static int number4= 6;public static void main(String[ ] args) { int product1 = numbe

2016-11-02 11:50:57 877

原创 java--关于线程的记录

1.线程并发时,为保证原子性,需要对共同访问的对象加锁。2.synchronized关键字可以锁代码块,也可以锁资源对象。若锁代码块,可以用this作为锁对象;若锁资源对象,可以用需要被锁的资源类作为锁对象。3.简单的锁可以考虑用violate关键则修饰有并发操作的变量。volatile告诉jvm, 它所修饰的变量不保留拷贝,而是直接访问主内存中的。4.经典的消费者,生产者模型,可以用java自带的

2016-11-02 09:23:59 279

原创 Android -- 字符和数字的判断

利用Pattern和Matcher类:String input = dialogEditText.getText().toString();Pattern pattern = Pattern.compile("[0-9]*");Matcher matcher = pattern.matcher(input);if(!matcher.matches()){

2016-11-01 10:04:05 544

原创 android--关于内部存储、外部存储以及存储路径

获取路径的方法getDataDirectory() = /datagetFilesDir().getPath() = /data/user/0/com.goodix.gfdebugtool/filesgetRootDirectory().getPath() = /systemgetExternalFilesDir(String DIRECTORY_DCIM) = /storage/emulated/

2016-10-26 11:50:38 565

转载 ubuntu下wing ide的安装和破解

1.wing ide安装 官网安装:https://wingware.com/downloads2.破解: 1) 安装WingIDE成功后启动,激活时输入license id CN123-12345-12345-12345。2) 点击Continue后弹框,拷贝框中的request code。3) 修改Python脚本中的Request Code为刚才得到的Request Code值,运行脚本

2016-10-24 11:43:13 872

原创 linux--脚本语言语法

程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编写脚本完成时,如果要执行该脚本,还必须使其可执行。要使编写脚本可执行,编译 chmod +x filename 这样才能用./filename 来运行1.echo -e输出控制若字符串中出现以下字符,则特别加以处理,而

2016-10-17 15:27:40 1012

转载 android--关于listView使用的几点建议

对于ListView的卡顿问题,有如下一些建议:1、使用ListView的时候注意尽量使用layout_height=”match_parent”。2、如果第1点无法避免,需要注意ListView的父布局,父布局以上绝对不要使用RelativeLayout,即使使用FrameLayout或LinearLayout会增加布局层级。3、如果第1点无法避免,需要注意不要在getView中使用setVisi

2016-10-17 10:59:56 357

原创 java--反射机制

1.简介 经典定义:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法。这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2.作用 反射机制给java带来了动态性,使得代码更加灵活,反射机制对实现通用的远程调用右很大帮助3.代码People类,测试用public class People {

2016-10-14 14:23:57 254

原创 java--关于动态代理

1.简介代理模式(Proxy Pattern)是GoF 23种Java常用设计模式之一。代理模式的定义:Provide a surrogate or placeholder for another object to controlaccess to it(为其他对象提供一种代理以控制对这个对象的访问)。使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象、创建开销大的对

2016-10-13 17:38:27 256

原创 android--自定义view的绘制

1.ondraw方法在初始化后自动调用,invalidate()方法可以通知重调ondraw来重绘view。2.配置canvas的画笔。mCurvePaint = new Paint();mCurvePaint.setAntiAlias(true);mCurvePaint.setColor(getResources().getColor(R.color.lightBlue));mCurvePa

2016-10-11 12:04:25 289

原创 android -- dp与pix

px :是屏幕的像素点 dp :一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px dip :等同于dp sp :同dp相似,但还会根据用户的字体大小偏好来缩放(建议使用sp作为文本的单位,其它用dip)转换:private int dp2px(int dp) { return (int) TypedValue.applyDimensio

2016-09-30 14:38:47 789

原创 android -- 关于fragment

1.Fragment有静态和动态两种使用方式 静态是指将fragment写在acticity的xml中当做普通控件。 动态是指在代码中添加fragment,动态使用时,需要在布局文件中为 Fragment 添加一个容器,以安排 Fragment 在 activity 视图中的位置。实践中常选用 FrameLayout 作为容器。2.Fragment的动态添加:FragmentManager fm

2016-09-30 12:02:06 314

原创 关于c++的virtual关键字

1.定义类函数 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数,即用父类的指针调用子类的函数。class A{public: virtual void foo() { cout << "A::foo() is called" << endl; }};class B: public A{public

2016-09-29 15:20:49 341

原创 c++中的初始化列表

冒号后面为类的初始化列表,变量间用”:”隔开。class MyExample {public: int a; float b; //构造函数初始化列表 MyExample(): a(0),b(8.8) {} //构造函数内部赋值 MyExample() { a=0; b=8.8; }};ps:

2016-09-29 13:51:42 219

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除