用unity5.6.1f1破解4.6.4 f1打开原来的场景不显示贴图是什么原因

你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
1.如果我打开着要打包的场景,进行打包。到游戏里光照贴图可正常显示
2. 如果我打开着另一个场景进行打包。到游戏里进这个场景他的光照贴图就不正堂显示了。
我打包场景的方式是.unity文件一个assetbundle,其它所有预设,材质,贴图一个assetbundle
我在游戏里对比了1 和2 两个情况下场景object的lightmapindex 和 lightmapScaleOffset 都是一样的。LightmapSettings.lightmaps也是都有数据。
有人遇到过类似的问题吗?求解决方法
光照贴图是和场景联系密切的。我之前也做过这方面的。光照贴图你要想动态加载只能把光照贴图放在Resources中动态Load并且指定到场景中。
要回复问题请先或
浏览: 1066
关注: 2 人小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
Unity3D教程手册&|&中国第一免费Unity3D教程手册&&&&
英宝通4.0公开课---致力于提供最新的Unity3D技术
英 宝通将在这个平台上会围绕Unity展开一系列的课程,在内容上从初级到深入、从理论到实践,各个层面都会涉及到。此次公开课属于Unity的介绍性教 程,也被纳入深圳英宝通科技有限公司的入职培训课程体系,主要向大家介绍Unity 最新发布的4.0版本操作系统的基础内容。 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
视频观看地址:
&&一、第一课:界面介绍& & 【英宝通Unity4.0公开课】第一讲 编辑器工作区
二、第二课:资源管理 & & 【英宝通Unity4.0公开课】第二讲 资源及资源类型
& & 【英宝通Unity4.0公开课】第三讲 资源管理:模型和角色动画的输出设置(上)
& & 【英宝通Unity4.0公开课】第四讲 资源管理:模型和角色动画的输出设置(下)
& & 【英宝通Unity4.0公开课】第五讲 资源管理:材质和着色器
& & 【英宝通Unity4.0公开课】第六讲 资源管理:2D文理Movie文理
& & 【英宝通Unity4.0公开课】第七讲 资源管理:声音文件
& & 【英宝通Unity4.0公开课】第八讲 资源管理:Asset Store(资源 Store)
& & 【英宝通Unity4.0公开课】第九讲 资源管理:Prefab( 预设 )
& & 【英宝通Unity4.0公开课】第十讲 资源管理:Project视窗搜索功能 & & 【英宝通Unity4.0公开课】第十一讲 资源输入原理
三、第三课:场景创建 & & 【英宝通Unity4.0公开课】第十二讲 场景创建:游戏物体与组件 & & 【英宝通Unity4.0公开课】第十三讲 场景创建:属性编辑器的使用
& & 【英宝通Unity4.0公开课】第十四讲 场景创建:场景视图操作
& & 【英宝通Unity4.0公开课】第十五讲 场景创建:灯光和摄像机
四、第四课:Unity脚本使用 & & 【英宝通Unity4.0公开课】第十六讲 Unity脚本使用:脚本及变量
& & 【英宝通Unity4.0公开课】第十七讲 Unity脚本使用:游戏对象组件访问
& & 【英宝通Unity4.0公开课】第十八讲 Unity脚本使用:游戏对象访问操作控制
& & 【英宝通Unity4.0公开课】第十九讲 Unity脚本使用:脚本时间控制
& & 【英宝通Unity4.0公开课】第二十讲 Unity脚本使用:随机数的使用
& & 【英宝通Unity4.0公开课】第二十一讲 Unity脚本使用:C#脚本编写
& & 【英宝通Unity4.0公开课】第二十二讲 Unity脚本使用:物体间通信方式
五、第五课:GUI图形用户界面 & & 【英宝通Unity4.0公开课】第二十三讲 GUI图形用户界面:UnityGUI原理介绍
& & 【英宝通Unity4.0公开课】第二十四讲 GUI图形用户界面:常用控件及使用
& & 【英宝通Unity4.0公开课】第二十五讲 GUI图形用户界面:复合控件及使用
& & 【英宝通Unity4.0公开课】第二十六讲 GUI图形用户界面:群组视图控件及使用
& & 【英宝通Unity4.0公开课】第二十七讲 GUI图形用户界面:GUI Skin及创建自定义风格组件
& & 【英宝通Unity4.0公开课】第二十八讲 GUI图形用户界面:GUILayout控件及使用
& & 【英宝通Unity4.0公开课】第二十九讲 GUI图形用户界面:动态窗口添加及使用中文字体
六、第六课:地形引擎介绍 & & 【英宝通Unity4.0公开课】第三十讲 地形引擎介绍:地形创建
& & 【英宝通Unity4.0公开课】第三十一讲 地形引擎介绍:地形绘制& & 【英宝通Unity4.0公开课】第三十二讲 地形引擎介绍:地形纹理绘制&相关资源:
&&&&Unity3D脚本/插件&&&&&&&&&&&&&&
Unity3D实用小脚本 / Script
脚本是一个游戏的灵魂,是游戏制作中不可或缺的一部分,它能将生命注入游戏中的人物,将游戏动画演绎的活灵活现,实现各个文本的数据交互并监控游戏运行状态。脚本是一种优化,使游戏更便捷的完成所需要的任务。脚本也是批处理文件的延伸,是一种纯文本保存的程序,你可以把这个集合存为一个独立的文件然后在需要的时候执行,这样就可以方便你在程序中的使用。/topic/script/index.html&&
Unity3D项目开发十大必备插件
&【Unity3D项目开发十大必备插件】&&Unity3D插件是您创建游戏时,节省时间和工作的关键资源。所以想用Unity制作出色的作品,插件是必不可少的。&点击进入专题:&&关注Unity,致力于提供最新的Unity3D技术!
Unity3D切水果特效源码
 Unity3D切水果特效源码,大小848KB,下载地址在TXT文档里,以下是代码片段。
varKnife:GameObject;
var prefab :GameObject;
varSwitch: boolean;
functionUpdate(){
& & & & if(Switch){
& & & & & & & & var curScreenSpace =Vector3(Input.mousePosition.x,Input.mousePosition.y,10);
& & & & & & & & var curPosition =Camera.main.ScreenToWorldPoint(curScreenSpace);
& & & & & & & & prefab.transform.position= curPosition;
& & & & if(Input.GetButtonDown("Fire1")){
& & & & & & & & Switch=true;
& & & & & & & & prefab =Instantiate(Knife,Camera.main.ScreenToWorldPoint(Vector3(Input.mousePosition.x,Input.mousePosition.y,10)),Quaternion.identity);
& & & & if(Input.GetButtonUp("Fire1")){
& & & & & & & & Switch=false;
& & & & & & & & Destroy(prefab);
Unity3D坦克大战源码
Unity3D坦克大战源码,大小12.4MB,下载地址在TXT文档里,以下是代码片段.
private var menuShow:function Start(){& & & & DontDestroyOnLoad(this);& & & & menuShow=}function Update () {& & & & if(Input.GetKeyDown(KeyCode.Escape)){& & & & & & & & menuShow=& & & & }}function OnGUI(){& & & & if(menuShow==false){& & & & & & & && & & & }& & & & if(GUI.Button(Rect(Screen.width/2-30,Screen.height/2-50,60,30),"Scene 1")){& & & & & & & & print("You click the Scene 1 button!");& & & & & & & & Application.LoadLevel(1);& & & & & & & & menuShow=& & & & }& & & & else if(GUI.Button(Rect(Screen.width/2-30,Screen.height/2-10,60,30),"Scene 2")){& & & & & & & & print("You click the Scene 2 button!");& & & & & & & & Application.LoadLevel(2);& & & & & & & & menuShow=& & & & }& & & & else if(GUI.Button(Rect(Screen.width/2-30,Screen.height/2+30,60,30),"Quit")){& & & & & & & & print("You click the Quit button!");& & & & & & & & Application.Quit();& & & & }}
unity基础试题小测
Unity3D脚本:更改脚本和类名,且不破坏现有脚本引用的方法
Unity开发过程中,难免遇到需要修改类名(以及对应脚本名)的时候,但如果草率地在MonoDevelop里把类名直接改掉,会破坏现有场景以 及Project Assets中所有引用该脚本的链接,届时还需要一个一个把脚本添加回去,非常麻烦。其实只要遵循以下3个步骤,即可顺利重命名类名,且不破坏任何资源链 接以及脚本之间的引用:在Project Assets中,修改脚本文件名称。双击改好名的脚本,在MonoDevelop中打开,然后将光标移至类名处,按键盘F2键,在弹出对话框中输入新名称(与脚本名相同)。Ctrl+S保存脚本。注意:第3步中如果改名牵涉到多个引用到该类的脚本,且这些脚本正好在MonoDevelop中的其他tab打开了,会发现这些脚本也被修改了,此时还需要对他们一一进行保存,否则编译器会报错,更快捷的方法是:File-&Save All。
Unity3D脚本:人物控制脚本的实现
对D3D的空间几何知识是必要的,而这里要注意的是U3D提供了一个方法来判断是否与地面相碰撞,_grounded = (_flags & CollisionFlags.CollidedBelow) != 0;其中CollisionFlags.CollidedBelow要想获得一个值,玩家的移动方向必须有朝向地面的方向向量分量。_grounded = (_flags & CollisionFlags.CollidedBelow) != 0;为了在跳跃过程中更具有真实性,加入了重力加速度的概念,注意_gravity表示的是&重力速度&,也就是向下的一个向量分量。
// Require a character controller to be attached to the same game object @script RequireComponent(CharacterController) var _speed : var _jumpspeed : var _rotatespeed : var _originalgravity : var _gravity : var _addgravity : var _moveDirection: Vector3; var _lastDirection: Vector3; var _originalRotation : Q var _ var _ var _ var _ var _run : AnimationC var _idle : AnimationC var _attack : AnimationC var _jump : AnimationC private var _controller : CharacterC enum PlayerState { STATE_READY& &= 0, STATE_RUN& & = 1, STATE_IDLE& & = 2, STATE_ATTACK& &= 3, STATE_JUMP& & = 4, } private var _playerstate : PlayerS function Start(){ _speed = 50F; _jumpspeed = 40F; _rotatespeed = 10F;
_originalgravity = 40; _gravity = 40; _addgravity = 3;
_canjump =
_moveDirection = Vector3. _lastDirection = Vector3. _originalRotation = new Quaternion(0f, 0f, 0f, 1f);
_grounded = _animation = GetComponent(Animation);
_controller = GetComponent(CharacterController);
_playerstate = PlayerState.STATE_READY;
_moveDirection.y = -1; //给Y轴方向一个初始值,以使其可以与地面正确相撞 } function Update () { //模型的旋转(临时) if(Input.GetKey("a")){ transform.Rotate(-Vector3.up*2); } if(Input.GetKey("d")){ transform.Rotate(Vector3.up*2); }
if(_grounded) { //本地空间水平移动方向向量 _moveDirection = Vector3( 0 , -1 ,Input.GetAxis("Vertical"));
//本地空间移动方向转为世界空间的移动方向向量 _moveDirection = transform.TransformDirection(_moveDirection); _moveDirection *= _
//重力速度还原 _gravity = _ }
//跳跃 if (Input.GetButton("Jump") ) { _playerstate = PlayerState.STATE_JUMP;
//获得初速度 _moveDirection.y = _
_animation.Play("jump"); }
//如果当前处于跳跃中,就算一下Y向量 if(_playerstate == PlayerState.STATE_JUMP) { _gravity += _ _moveDirection.y -= _gravity * Time.deltaT }
//移动,并获得碰撞标示 var _flags : CollisionFlags =_controller.Move(_moveDirection *Time.deltaTime); //是否已经着地 _grounded = (_flags & CollisionFlags.CollidedBelow) != 0; print(_grounded); //======================================================================= //攻击 if(Input.GetKeyUp("f") && _grounded &&_playerstate == PlayerState.STATE_IDLE) { _playerstate = PlayerState.STATE_ATTACK; _animation.Play("attack"); }
//休闲 if(_moveDirection.x == 0&&&&&&_moveDirection.z == 0&& _grounded && _playerstate != PlayerState.STATE_ATTACK) if(_moveDirection != Vector3(0,0,0)) { if(_playerstate != PlayerState.STATE_ATTACK) { _playerstate = PlayerState.STATE_IDLE; _animation.Play("idle"); } }
//跑动 if((_moveDirection.x != 0 || _moveDirection.z != 0) &&_grounded&&) { _playerstate = PlayerState.STATE_RUN; _animation.Play("run"); } } //供外部UI调用的接口,调用攻击动作 function PlayAnimation_Attack() { if(_grounded && (_playerstate ==PlayerState.STATE_IDLE||_playerstate ==PlayerState.STATE_ATTACK)) { _playerstate = PlayerState.STATE_ATTACK; _animation.Play("attack"); } }
Unity3D脚本:摄像机自动适应所有分辨率代码
本文链接: /1410.html & & & &首先需要确定好整个游戏开发的宽高比,比如 4:3(1024 * 768)& ,& 3:2 (960 * 640) , 16:9()等等,然后在场景内所有相机生成完毕后使用这段代码。此方法是设置相机最终生成的图像比例,下面的代码是强制以 4 : 3 比例拉伸到当前选择的分辨率。此代码在IOS,Android,Mac和Windows下测试通过。
foreach (var cam in Camera.allCameras) { cam.aspect = 4/3f; }
Unity3D教程:实现多人场景的网络通信
* 版权声明:转载时请以超链接形式标明文章原始出处和作者信息
* 本文来自:
* 本文链接:&/1613.html
标签:&Unity3D免费教程&Unity3D教程&实现多人场景的网络通信
1.首先要准备一个client和server通信的连接对象和脚本,可以做到同一个程序里,通过点击不同的按钮决定充当client或是server。
2.服务器不需要控制人物,只需要提供一个连接的场所,客户端连入后,需要每个为客户端创建一个新角色。可以把玩家作为一个prefab,建立另一个对象SpawnPlayer,并附加脚本Spawnscript.js监控客户端连接到服务器上的事件OnConnectedToServer,这个事件只有客户端才会触发。当触发后,就会在场景中用角色的prefab创建出一个新的实例,并且让所有人的场景中也都创建出来,这需要使用Network.Instantiate方法,这个方法会用参数中给出的prefab在所有的客户端场景指定位置创建一个实例,底层其实是封装了RPC调用。
3.玩家本身会附带控制脚本,但是客户端需要进行镜头追踪,因为玩家是动态生成出来的,所以开始时Camera上的追踪脚本的追踪目标并没有绑定到玩家,所以需要进行这一步操作。还要保证绑定的对象是自己客户端所对应的人物,而不是别人的人物,所以最好从刚才Network.Instantiate时保存下自己创建出来的人物,然后将Camera脚本的target赋值为它。
从一个对象获取它的脚本的方法是用GameObject.GetComponet(Type type)函数,参数需要传脚本的类名,类名Unity规定是和脚本文件名的前缀是相同的,比如SmoothFollow.js就是SmoothFollow。
4.需要给人物的prefab增加NetworkView的Component来,因为需要既需要同步人物的Transform信息,也需要同步Animation,所以增加2个NetworkView,这里决定使用状态同步机制(也可以用RPC),所以设置相关状态同步的属性。
5.人物角色的控制需要一些特殊处理,因为每个创建出来的角色都有相同的控制脚本,而一个客户端只能控制自己的人物,在进行控制响应之前,需要确定是自己的人物才可以操作。
这里使用人物身上的networkView的类方法isMine来判断。只有创建了这个人物的client的这个属性才会为true。所以只要看这个属性不为true,在控制人物位移、跳跃、动画之前就直接return掉就可以了。
Unity3D教程:Unity制作连连看教程
* 版权声明:转载时请以超链接形式标明文章原始出处和作者信息
* 本文来自:
* 本文链接:&/1616.html
标签:&Unity3D4.0教程&Unity3D免费教程&Unity3D教程&连连看教程
连连看的规则应该都知道,选中的两个图片相同,并且不能多于两个拐点能连在一块,这两个图片就可以消掉;
连通的类型:分为直线型、一个拐点、两个拐点。
直线型:直线型分两种,一种是横向,一种是竖向;
横向连接:
Unity3D教程:Unity制作连连看教程
A,B两点的x坐标相同,图片类型相同,从A点开始到B点检测,如果AB两点之间没有其他图片就销毁AB两个图片,竖向的和横向的类似
一个拐点:
Unity3D教程:Unity制作连连看教程
AB两点的x坐标和y坐标都不相同的时候开始检测一个拐点是否可以连接,通过AB两点计算出CD两点,然后分别检测AC,BC,AD,BD是否可以通过直线型连接到一起,显然AB两点可以通过A&C,C&B连接到一起,
两个拐点:
Unity3D教程:Unity制作连连看教程
AB两点,从A开始,横向和竖向把所有和A能直线连接的点找出来,用这些点和B点做一个拐点的检测,显然A点下边的那个点可以通过绿色的那个点可以通过一个拐点的方式和B点连接起来。
Unity3D脚本:Unity制作连连看脚本
* 版权声明:转载时请以超链接形式标明文章原始出处和作者信息* 本文来自:* 本文链接:&/1621.html标签:&Unity3D代码&Unity3D免费脚本&Unity3D脚本&连连看脚本
GameManager.cs& 游戏的核心代码,产生图片,判断是否可以销毁等。
[color=#008ef1][font=宋体]using UnityE[/font][/color]using System.Cusing System.Collections.Gpublic class GameManager : MonoBehaviour{public DrawLine drawL//画线public GameObject tileP//tile的预制public List&Tile&//开始实例化的时候存放tilepublic List&Tile& _//存放随机摆放的tilepublic List&Tile& tilesE//为了边界处可以有拐点,把棋盘四周的tile放在这里,这里的tile看不到public int x,//棋牌的大小,两个数必须是偶数private Tile tileA;private Tile tileB;private Vector3 mousePprivate enum stepType//控制游戏的状态{one,two,three}private stepType _stepTvoid Start (){this.gameObject.transform.position = Vector3.Spawn ();_stepType = stepType.}private void Spawn ()//实例化tile{float num = (x * y - (2 * x + 2 * y - 4)) * 0.5f;for (int i = 0; i & i ++) {int idTex = Random.Range (20, 45);GameObject obj = Instantiate (tilePrefab) as GameOGameObject obj2 = Instantiate (tilePrefab) as GameOTile tile = obj.GetComponent&Tile& ();Tile tile2 = obj2.GetComponent&Tile& ();tile.Init (idTex);tile2.Init (idTex);tiles.Add (tile);tiles.Add (tile2);}for (int i = 0; i&((2*x+2*y) -4); i++) {//实例化边缘的tileGameObject obj = Instantiate (tilePrefab) as GameOobj.name = "edage";Tile tile = obj.GetComponent&Tile& ();tilesEdge.Add (tile);}CreatTile ();for (int i = 0; i & _tiles.C i++) {_tiles [i].transform.name = i.ToString ();_tiles [i].id =}this.transform.position = new Vector3 (-(x / 2.0f - 0.5f), -(y / 2.0f - 0.5f), 0);}private void CreatTile ()//随机摆放tile,如果是边缘的就放在边缘位置{int idTex = 0;float _y = 0.0f;for (int i = 0; i & i ++) {float _x = 0.0f;for (int j = 0; j & j ++) {if (i == 0 || j == 0 || i == y - 1 || j == x - 1) {tilesEdge [0].transform.position = new Vector3 (_x, _y, 0);tilesEdge [0].pos = new Vector2 (_x, _y);tilesEdge [0].transform.rotation = new Quaternion (0, 0, 180, 0);tilesEdge [0].transform.parent = this.gameObject._tiles.Add (tilesEdge [0]);tilesEdge [0].transform.localScale = Vector3.tilesEdge [0].type =tilesEdge.RemoveAt (0);} else {int id = Mathf.FloorToInt (Random.Range (0, tiles.Count));tiles [id].transform.position = new Vector3 (_x, _y, 0);tiles [id].pos = new Vector2 (_x, _y);tiles [id].transform.rotation = new Quaternion (0, 0, 180, 0);tiles [id].transform.parent = this.gameObject._tiles.Add (tiles [id]);tiles.RemoveAt (id);}_x += 1;}_y += 1;}}private void SelectTile ()//开始选择图片,通过射线方式选中,如果tileA和tileB不相同,则tileA等于tileB开始下一个检测{Ray ray = Camera.mainCamera.ScreenPointToRay (mousePos);RaycastHint mask = 1 && 8;if (Physics.Raycast (ray, out hit, mask)) {if (tileA == null) {tileA = hit.transform.GetComponent&Tile& ();tileA.SetTileTexture (1);//&&&&&&&&&&&&&&&&print ("tileA = hit.transform.GetComponent&Tile& ();" + tileA.transform.name);} else {tileB = hit.transform.GetComponent&Tile& ();tileB.SetTileTexture (1);//&&&&&&&&&&&&&&&&print ("tileB = hit.transform.GetComponent&Tile& ();" + tileB.transform.name);Compare (tileA, tileB);if (tileA == null && tileB == null) {//&&&&&&&&&&&&&&&&&&&&print ("a and b is null");}}//&&&&&&&&&&&&hit.transform.GetComponent}}
private void Compare (Tile tile1, Tile tile2)//比较两个点是否可以连接到一起{// same card_stepType = stepType.drawLine.waypoints.Add (tile1.transform); //第一个选择的tile是画线的起始位置,drawLine.transform.position = tile1.transform.destroy =print ("compare");if (tile1.pos.x == tile2.pos.x && tile1.pos.y == tile2.pos.y) {如果选中的是同一个图片返回tileA.SetTileTexture (0);//&&&&&&&&&&&&tileB.SetTileTexture (0);tileA = tileB;tileB =//&&&&&&&&&&&&tileA.SetTileTexture (1);} else if (tile1.pos.x == tile2.pos.x && tile1.pos.y != tile2.pos.y) {//如果两点的x相等,竖向检测print ("check y");destroy = CheckY (tile1, tile2);if (destroy)drawLine.waypoints.Add (tile2.transform);} else if (tile1.pos.x != tile2.pos.x && tile1.pos.y == tile2.pos.y) {//如果两点的y相等,横向检测print ("check x");destroy = CheckX (tile1, tile2);if (destroy)drawLine.waypoints.Add (tile2.transform);}if (!destroy) {//不符合直线连接方式的开始进行一个拐点的检测_stepType = stepType.destroy = CheckTwoStep (tile1, tile2);//&&&&&&&&&&&&print ("destroy = CheckTwoStep (tile1, tile1);:" + destroy);print ("check two step");if (!destroy) {//不符合直线和一个拐点检测的开始进行两个拐点的检测_stepType = stepType.destroy = CheckThreeStep (tile1, tile2);print ("check three:" + destroy);print ("tile1.idTex:" + tile1.idTex + "tile1.idTex:" + tile1.idTex);}}if (destroy) {//如果符合销毁条件销毁图片,并开始画线tile1.transform.localScale = Vector3.tile2.transform.localScale = Vector3.tile1.type =tile2.type =tileA =tileB =drawLine.MoveToWaypoint ();} else {//不符合的话,清除画线中的路径drawLine.ClearPath ();tileA.SetTileTexture (0);//&&&&&&&&&&&&tileB.SetTileTexture (0);tileA = tileB;tileB =}}// one step横向检测private bool CheckX (Tile a, Tile b){bool compare =int _min, _if (a.idTex == b.idTex) {CompareID (a, b, out _min, out _max);_min += 1;if (_min == _max)for (int i = _ i & _ i++) {if (_tiles [i].type == true) {compare =}}} else}//竖向检测private bool CheckY (Tile a, Tile b){bool compare =int _min, _//&&&&&&&&int idA = (int)(a.x * x + a.y);//&&&&&&&&int idB = (int)(b.x * x + b.y);//&&&&&&&&print (_tiles [idA].id.ToString () + "idA:" + idA);//&&&&&&&&print (_tiles [idB].id.ToString () + "idB:" + idB);//&&&&&&&&print ("a.idtex:" + a.idTex + "b.idtex:" + b.idTex);if (a.idTex == b.idTex) {CompareID (a, b, out _min, out _max);_min +=if (_min == _max)for (int i = _ i & _ i+=x) {//&&&&&&&&&&&&&&&&print ("1step");if (_tiles [i].type == true) {compare =}}//&&&&&&&&&&&&if (compare) {//&&&&&&&&&&&&&&&&print ("2step");//&&&&&&&&&&&&&&&&a.type =//&&&&&&&&&&&&&&&&b.type =//&&&&&&&&&&&&}} else}// two step一个拐点的检测private bool CheckTwoStep (Tile a, Tile b){if (a.pos.x == b.pos.x || a.pos.y == b.pos.y)int id1 = (int)(a.pos.y * x + b.pos.x);if (_tiles [id1].type == false) {_tiles [id1].idTex = a.idT
if (CheckY (_tiles [id1], b)) {if (CheckX (a, _tiles [id1])) {if (_stepType == stepType.two) {drawLine.waypoints.Add (_tiles [id1].transform);drawLine.waypoints.Add (b.transform);} else if (_stepType == stepType.three) {drawLine.waypoints.Add (_tiles [id1].transform);print ("=====================:" + 1);}}//&&&&&&&&&&&&&&&&else//&&&&&&&&&&&&&&&&&&&&}}int id2 = (int)(b.pos.y * x + a.pos.x);if (_tiles [id2].type == false) {_tiles [id2].idTex = b.idT
if (CheckY (a, _tiles [id2])) {if (CheckX (b, _tiles [id2])) {if (_stepType == stepType.two) {drawLine.waypoints.Add (_tiles [id2].transform);drawLine.waypoints.Add (b.transform);} else if (_stepType == stepType.three) {drawLine.waypoints.Add (_tiles [id2].transform);print ("=====================:" + 2);}}//&&&&&&&&&&&&&&&&else//&&&&&&&&&&&&&&&&&&&&}}}// three step两个拐点的检测private bool CheckThreeStep (Tile a, Tile b){print ("a:" + a.idTex + "b:" + b.idTex);//&&&&&&&&if (a.pos.x == b.pos.x || a.pos.y == b.pos.y)bool returnValue =print ("returnValue:" + returnValue);List&Tile& _comparrPointsB;ComparePoints (b, out _comparrPointsB);//返回b点可以横竖直线相连的点for (int i =0; i&_comparrPointsB.C i++) {returnValue = CheckTwoStep (a, _comparrPointsB [i]);if (returnValue) {drawLine.waypoints.Add (_comparrPointsB [i].transform);drawLine.waypoints.Add (b.transform);return returnV}}if (!returnValue) {List&Tile& _comparrPointsA;ComparePoints (a, out _comparrPointsA);print (a.name);print (b.name);for (int i =0; i&_comparrPointsA.C i++) {print ("--------------" + b.idTex);returnValue = CheckTwoStep (b, _comparrPointsA [i]);if (returnValue) {drawLine.waypoints.Add (_comparrPointsA [i].transform);drawLine.waypoints.Add (b.transform);return returnV}}
}return returnV}//两个拐点的时候返回可以与a横竖直线相连的点private void ComparePoints (Tile a, out List&Tile& comparePoints){print ("a.idtex" + a.idTex);comparePoints = new List&Tile& ();comparePoints.Clear ();//&&&&&&&&for (int i = 0; i & i ++) {//&&&&&&&&&&&&if (i != a.y) {//&&&&&&&&&&&&&&&&int id = (int)(i * x + a.pos.x);//&&&&&&&&&&&&&&&&if (_tiles [id].type == false) {//&&&&&&&&&&&&&&&&&&&&comparePoints.Add (_tiles [id]);//&&&&&&&&&&&&&&&&&&&&_tiles [id].idTex = a.idT//&&&&&&&&&&&&&&&&}//&&&&&&&&&&&&}//&&&&&&&&}for (int i = (int)a.pos.y - 1; i &-1; i--) {int id = (int)(i * x + a.pos.x);//&&&&&&&&&&&&print ("three step :" + id);if (_tiles [id].type == false) {comparePoints.Add (_tiles [id]);_tiles [id].idTex = a.idTprint ("_tiles [id].idTex = a.idT " + _tiles [id].idTex);} else}for (int i = (int)a.pos.y + 1; i & i++) {int id = (int)(i * x + a.pos.x);//&&&&&&&&&&&&print ("three step :" + id);if (_tiles [id].type == false) {comparePoints.Add (_tiles [id]);_tiles [id].idTex = a.idTprint ("_tiles [id].idTex = a.idT " + _tiles [id].idTex);} else}for (int i = (int)a.pos.x -1; i &-1; i --) {int id = (int)(a.pos.y * x + i);if (_tiles [id].type == false) {comparePoints.Add (_tiles [id]);_tiles [id].idTex = a.idTprint ("_tiles [id].idTex = a.idT " + _tiles [id].idTex);} else}for (int i = (int)a.pos.x +1; i & i ++) {int id = (int)(a.pos.y * x + i);if (_tiles [id].type == false) {comparePoints.Add (_tiles [id]);_tiles [id].idTex = a.idTprint ("_tiles [id].idTex = a.idT " + _tiles [id].idTex);} else}//&&&&&&&&for (int i = 0; i & i ++) {//&&&&&&&&&&&&if (i != a.x) {//&&&&&&&&&&&&&&&&int id = (int)(a.pos.y * x + i);//&&&&&&&&&&&&&&&&if (_tiles [id].type == false) {//&&&&&&&&&&&&&&&&&&&&comparePoints.Add (_tiles [id]);//&&&&&&&&&&&&&&&&&&&&_tiles [id].idTex = a.idT//&&&&&&&&&&&&&&&&}//&&&&&&&&&&&&}//&&&&&&&&}}private void CompareID (Tile a, Tile b, out int min, out int max){
if (a.id & b.id) {min = a.max = b.} else {min = b.max = a.}}Vector2 TexSize (){Vector2 size = new Vector2 (1 / x, 1 / y);}Vector2 TexOffset (int _idTex){int a = (int)(_idTex / x);//&&&&&&&&print (a + "a:" + _idTex);int b = (int)(_idTex % x);//&&&&&&&&print (b + "b:" + _idTex);Vector2 offset = new Vector2 (b / x, (y - 1 - a) / y);}void Update (){
if (Input.GetMouseButtonUp (0)) {mousePos = Input.mousePSelectTile ();}
}private void ClearTiles (List&Tile& tiles){
tiles.Clear ();//&&&&&&&& this.gameObject.transform.DetachChildren();}}// ariDrawLine.cs,画线脚本,用的itween。
using UnityEusing System.Cusing System.Collections.Gpublic class DrawLine : MonoBehaviour{public List&Transform& waypoints = new List&Transform& ();public float rate = 1;private int currentWaypoint = 1;public void MoveToWaypoint (){print ("public void MoveToWaypoint (): " + waypoints.Count);StartCoroutine ("move");}public void ClearPath (){waypoints.Clear ();print ("path.Clear ();");}IEnumerator move (){for (int i = 0; i & waypoints.C i++) {iTween.MoveTo (this.gameObject, waypoints [i].position, rate);print ("now id:" + i);yield return new WaitForSeconds(rate);}waypoints.Clear ();}}Tile.cs
using UnityEusing System.Cpublic class Tile : MonoBehaviour{public int idT //通过这个判断两个图片是否相同public Vector2public bool type =//控制图片的状态,当销毁的时候为false,其他判断的时候可以通过该点public float x,public Texture texA, texB;//鼠标选中的时候可以换贴图public GameO//鼠标选中的时候上边显示的框框public void Init (int _idTex){idTex = _idTVector2 offset = TexOffset (_idTex);this.renderer.material.SetTextureOffset ("_MainTex", offset);this.renderer.material.SetTextureScale ("_MainTex", new Vector2 (0.2f, 0.1f));}//设置tile显示的贴图和大小public void SetTileTexture (int i){if (i == 0) {this.renderer.material.mainTexture = texA;mask.transform.localScale = Vector3.}if (i == 1) {this.renderer.material.mainTexture = texB;mask.transform.localScale = new&&Vector3 (0.1380835f, 0.1380835f, 0.1380835f);}}//这个就是裁剪一张大图,变成一个个小的,贴到tile上Vector2 TexOffset (int _idTex){int a = (int)(_idTex / x);int b = (int)(_idTex % x);Vector2 offset = new Vector2 (b / x, (y - 1 - a) / y);}Vector2 TexSize (){Vector2 size = new Vector2 (1 / x, 1 / y);}}Menu.cs,添加两个按钮。
using UnityEusing System.Cpublic class Menu : MonoBehaviour{public GameManager gameMprivate GameManager _gameMprivate bool start =void OnGUI (){if (start) {if (GUI.Button (new Rect (10, 10, 100, 50), "start")) {start =_gameManger = Instantiate (gameManager) as GameM}}if (GUI.Button (new Rect (10, 70, 100, 50), "restart")) {if (_gameManger != null) {Destroy (_gameManger.gameObject);print ("Destroy(_gameManger.gameObject);");}_gameManger = Instantiate (gameManager) as GameM}}}&&&&&
站长在关注

我要回帖

更多关于 unity5.6.1f1破解 的文章

 

随机推荐