- 博客(26)
- 资源 (11)
- 收藏
- 关注
原创 Unity3D控制物体移动
在游戏开发中,游戏物体的移动是最基本的,如果连物体都移动不起来,那就不用说玩游戏了。下面记录了自己在开发中实现的物体移动,不同项目可能有不同的物体移动实现,也有很多种不同的物体移动实现,文章会持续更新。1.点击鼠标,物体移动到鼠标的位置实现代码:protected Transform _transform;protected Vector3 targetPos;//目标位置
2016-05-23 11:49:39 39366 3
原创 Unity3D世界的坐标系
Unity3D世界中的坐标系有四种:世界坐标系、屏幕坐标系、视口坐标系和绘制UI界面的坐标系。1.世界坐标系我们在场景中添加物体(Cube),他们都是以世界坐标显示在场景中。transform.position可以获取他们的世界坐标。2.屏幕坐标屏幕坐标是以像素为单位的,以屏幕左下角为(0,0),右上角为(Screen.width,Screen.height),z的位置是以相机的世
2016-05-19 20:01:33 1299
原创 Unity3D射线
射线是从一个点向另外一个点发生的一条线,一旦与其他模型发生碰撞,它将停止发射。注意这条线是逻辑上的,界面上看不到。一般使用射线判断是否发射至某个游戏对象上或者获得鼠标点击的游戏对象等。射线是从摄像机发出的。关键代码://定义射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //
2016-05-17 21:03:01 2285
原创 Unity3D-NavMesh导航网格寻路
NavMesh(导航网格)是3D游戏世界中用于动态物体实现自动寻路的技术。NavMesh系统是人工智能的一种,它使用一个添加在游戏对象上或者作为游戏对象父物体的名为“导航网格代理”(NavMeshAgent)的组件来控制该游戏对象寻找能够通过的路径,并最终到达目的地。自动寻路还可以实现绕过障碍、爬上与跳下障碍物、按类别寻找属于自己的道路、动态设置道路中的障碍等技术。下面用一个简单的De
2016-05-17 20:05:03 12577
原创 Unity3d协程实现倒数计时
Unity3d协程的知识,不了解的同学可以在网上查找一下相关资料或者看一下Unity3D协程介绍 以及 使用。下面介绍Unity3d协程实现倒数计时,实现代码:public class GameManager : MonoBehaviour{ private bool _BoolIsDisplayNumber = false;//是否显示数字 private bool _
2016-05-17 14:57:58 5373
原创 Unity3d基础知识&面试题(重要)
1.Unity3d中的碰撞器和触发器的区别?碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。当Is Trigger=false时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Say/Exit函数;当Is Trigger=true时,碰撞器被物理引擎忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。如果
2016-05-17 14:07:22 4258
原创 一个牧场目前一共有20头刚出生的羊,母羊、公羊各一半。假如母羊5岁时后每年生一胎(母羊,公羊各一半)。羊活到10岁后死亡。请问20年后这个牧场有多少只羊? 请用C#写出算法。
假设一胎生一只公羊和一只母羊。实现代码:using System;using System.Collections.Generic;using System.Text;namespace 多少只羊{ class Program { static void Main(string[] args) { int s
2016-05-17 12:25:13 2467
原创 不允许使用循环语句、条件语句,在控制台中打印出1-200这200个数
不允许使用循环、条件,那最简单的就是使用递归了。实现代码:using System;using System.Collections.Generic;using System.Text;namespace 打印出1_200{ class Program { static void Main(string[] args) {
2016-05-17 12:19:11 1852
原创 序列化和反序列化
1、序列化序列化是将对象状态转换为可保持或传输的格式的过程,比如转化为二进制、xml、json等的过程。2、反序列化与序列化相对的是反序列化,它将流转换为对象,也就是将序列化过程中所生成的二进制串、xml、json等转换成数据结构或者对象的过程。 这两个过程结合起来,可以轻松地存储、传输数据。3、序列化和反序列化的用途主要用于跨进程生命周期保存对象,比如远程传输对象或者app关闭期间保存对象等。
2016-05-17 11:54:51 425
原创 C# 抽象方法和抽象类
在C#中,用abstract修饰符来表示抽象类,即类是不完整的,使用时需要注意一下三点:(1)抽象类只能用作基类,也就是说抽象类不能直接实例化,对抽象类使用new运算符时编译时会出现错误。(2)抽象类中可以定义抽象方法(用abstract修饰),所谓抽象方法就是只有声明而无具体任何具体实现的细节方法。(3)抽象类中允许(不限制必须)一个或者多个定义抽象方法或抽象属性。但若抽象类中有抽象
2016-05-16 20:42:58 572
原创 C# 虚方法
虚方法,就是可以在派生类中对其实现进一步改进的方法,也称之为方法覆盖。示例代码:using System;using System.Collections.Generic;using System.Text;namespace 虚方法{ class plant //定义基类 { public virtual void area() //
2016-05-16 20:00:13 462
原创 C# Hashtable类
Hashtable称为哈希表。Hashtable封装了一个键(key)/值(value)对的集合,键/值对是根据键的哈希代码进行组织的(一个对象的哈希代码可以通过IHashCodeProvider接口来获得)。它的每个元素都是一个存储在字典实体对象中的键/值对。其中key通常可用来快速查找,同时key是区分大小的。value用于存储对应key的值。Hashtable中key/value键/值对均为
2016-05-16 15:40:38 968
原创 值类型和引用类型间的转换-装箱和拆箱
装箱(Boxing)和拆箱(Unboxing)是C#类型系统中重要的概念。它允许将任何类型的数据转换为对象,同时也允许任何类型的对象转换到与之兼容的数据类型。1.装箱装箱转换是指将一个值类型的数据隐式地转换成一个对象类型(object)的数据。例如:int i=20;object o=i;2.拆箱拆箱转换是一个与装箱转换相反的操作,拆箱用于把object类型转换为数值类型
2016-05-16 13:45:14 2481 1
原创 Unity3D之Easytouch控件控制主角移动
开发步骤:1.导入Charactor Controller资源包;2.导入Easy Touch 3.1.0的资源包;3.创建一个人物模型;4.新建一个Plane作为地板。5.新建一个joystick,添加步骤如下图所示:6.设置摇杆的相关属性:注:如图中属性一定要设置好,不然的话会出现摇杆没有反应的情况!!!7.为主角(即需要Easytouch摇杆控
2016-05-14 19:48:14 7037
原创 简单工厂设计模式
简单工厂大概就是使用一个“工厂类”封装对象创建的逻辑,使使用者可以不用接触对象的细节。示例代码:public abstract class Animal { } public class Dog : Animal { } public class Pig : Animal { } public class Cat : Ani
2016-05-14 18:19:20 455
原创 Unity3d制作Loading场景进度条
通常游戏的主场景包含的资源较多,会导致加载场景的时间较长。为了避免这个问题,可以首先加载Loading场景,然后再通过Loading场景来加载主场景。因为Loading场景包含的资源较少,所以加载速度快。在加载主场景的时候一般会在Loading界面中显示一个进度条来告知玩家当前加载的进度。在Unity中可以通过调用Application.LoadLevelAsync函数来异步加载游戏场景,通过
2016-05-14 17:43:57 1697
原创 用递归方法求n!
求n!可以用递推方法,即从1开始,乘2,再乘3......一直乘到n。这种方法容易理解,也容易实现。递推法的特点是从一个已知的事实出发,按一定规律推出下一个事实,再从这个新的已知的事实出发,再向下推出一个新的事实。这是和递归不同的。求n!也可以用递归方法,即5!=4!×5,而4!=3!×4,...,1!=1.可用下面的递归公式表示:n!=1(n=0,1)n!=n*(n-1)!(n>1)
2016-05-14 12:36:29 24930 4
原创 找到100~200之间的素数
判别m是否为素数的算法:让m被2~√m除,如果m不能被2~√m之中任何一个整数整除,就可以确定m是否素数。实现代码:#include#include#includeusing namespace std;int main(){ int m,k,i,n=0; bool prime; for(m=101;m<=200;m=m+2) //判别m是否为素数
2016-05-14 11:53:08 1107
原创 求Fibonacci数列前40个数
求Fibonacci数列前40个数。这个数列有以下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即F1=1 (n=1)F2=2 (n=2)Fn=Fn-1+Fn-2(n>=3) 这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔
2016-05-14 11:07:53 25357 1
原创 字符串函数-strcpy
原型:extern char *strcpy(char *dest,char *src);用法:#include 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。返回指向dest的指针。举例://strcpy.c#include#includemain(){
2016-05-14 10:22:15 578
原创 面向对象设计
面向对象设计的三原则:封装、继承、多态。1.封装: 封装是面向对象的特征之一,是对象和类概念的主要特征。封装是过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其它对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表
2016-05-13 19:44:54 712
原创 指针和引用的差别
(1)非空区别。在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这是你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针要高。(2)合法性
2016-05-13 19:17:30 527
原创 C# 委托和事件
今天刚好学习到unity中easytouch控件(呆会还要写一个文章),又碰到了委托和事件这个我不懂的概念,所以学习一下,这里主要通过实例的讲解,我会再查书去看相关知识。委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要地介绍一下委托的基本知识:委托的定义委
2016-05-13 12:16:11 553
原创 面试题:实现两个N*N矩阵的乘法,矩阵由一维数组表示
实现两个N*N矩阵的乘法,矩阵由一维数组表示代码如下://实现两个N*N矩阵的乘法,矩阵由一维数组表示。#includeusing namespace std;#define size 2int *multi(int *a, int *b, int N){ int i, j, k, temp; int *c = (int *)malloc(N*N); //动态内存分配,m
2016-05-12 21:49:13 3310
原创 Unity3D射线检测控制转向
Unity3D射线检测控制转向,使用Ray射线检测鼠标的位置信息,角色transform方向转向该位置。//控制转向 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo;//碰撞信息,用来获取从raycast函数中得到的信息反馈的结构 if
2016-05-10 18:53:40 2118
rediscache.zip
2019-11-21
MercatorCoordinatesConverter.cs
2019-09-19
bootstrap风格的zTree插件.zip
2019-07-11
OpenLayers3加载谷歌地图
2019-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人