Unity
树袋趴趴熊
这个作者很懒,什么都没留下…
展开
-
tolua集成lua-protobuf库,解析protobuf3
https://github.com/wangshucheng/tolua已经重新编译好tolua库,可运行TestLuaProtobuf场景进行测试参考:tolua集成lua-protobuf库tolua中使用protobuf3—集成lua-protobuftolua_runtime 集成 lua-protobuf 第三方pb3解析库...原创 2020-04-23 10:04:22 · 2373 阅读 · 2 评论 -
Unity3D-后期处理 Post-process Volume Profile
Ambient Occlusion 环境光遮罩:用来使像是世界中难以照射到光线的角落,交叉点等地方变暗。Anti aliasing:抗锯齿:抗锯齿功能提供的算法可以是锯齿感明显的边缘更加平滑,虽然锯齿感减少,却会使物体变得模糊。Auto Exposure 自动曝光:模拟人眼适应各种黑暗与光亮的效果,比如从黑暗的隧道出来时,人眼会有短暂时间的炫目。Bloom 辉光:最常用的Post-proce...原创 2020-01-09 12:21:49 · 5395 阅读 · 0 评论 -
Unity3D-优化之二 代码质量
代码质量运行时间垃圾回收GC AllocUnity 低效率方法Unity 组件访问器运行时间public class TimeSpanManager : Singleton<TimeSpanManager>{ System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); public voi原创 2017-05-27 10:06:15 · 474 阅读 · 0 评论 -
Unity3D-UGUI-带滚动条的滑动文本框
1.在Canvas新建一个Panel,添加 scroll Rect和mask组件2.Panel下新建一个Text,Vertical Overflow设置成Overflow,然后添加 Content Size Fitter这个Layout,该Layout的Vertical Fit设置为Perferred Size,然后调整大小和在Panel中的位置3.Pane原创 2017-03-21 09:49:42 · 20927 阅读 · 0 评论 -
Unity3D-将文本复制到剪切板
Unity里将文本复制到剪切板中需要分别在Android和IOS中实现iOS端实现Clipboard.mm@interface Clipboard : NSObjectextern "C"{ /* compare the namelist with system processes */ void _copyTextToClipboard(const char *textLis转载 2017-03-21 09:12:58 · 5727 阅读 · 1 评论 -
Unity3D-各平台文件读写操作路径目录
public string AssetCachesDir { get { string dir = "";#if UNITY_EDITOR dir = Application.dataPath + "Caches/";//路径:/AssetsCaches/#elif UNITY_IOS原创 2016-12-17 11:21:08 · 4719 阅读 · 0 评论 -
Unity3D-优化
一、影响因素:Draw Calls(合并纹理、批处理)顶点(使用LOD、遮挡剔除)像素(绘制顺序、透明物体、减少实时光照)带宽(减小贴图,利用缩放)二、静态对象优化:1.贴图(纹理):减小大小,利用缩放2.模型:删除多余组件3.渲染:使用光照贴图,遮挡剔除三、动态对象优化:1.对象:频繁创建删除的对象,使用对象池(ObjectPool)2原创 2015-11-25 21:59:35 · 375 阅读 · 0 评论 -
Unity3D-单例模式
先声明一个静态私有变量,如:instance;再声明一个静态公共方法,如:GetInstance,在该方法中判断instance为null时,通过GameObject.FindObjectOfType(typeof(MyClass))创建instance的实例(在C#中直接new一个新的实例),不为null则直接返回。参考代码:public class MyClass {原创 2015-11-11 23:53:17 · 343 阅读 · 0 评论 -
Unity3D-获取命令行启动参数
using UnityEngine;using System.Collections;using System;using UnityEngine.UI;using System.Linq;public class CmdTest : MonoBehaviour { public Text text1; public Text text2; // Use this for原创 2016-11-30 20:25:46 · 14387 阅读 · 0 评论 -
Unity3D-MONO脚本自带函数执行顺序生命周期
脚本自带函数执行顺序如下:将下面脚本挂在任意物体运行即可得到Awake ->OnEable-> Start -> FixedUpdate-> Update -> LateUpdate ->OnGUI ->Reset -> OnDisable ->OnDestroyAwake:用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对原创 2015-12-19 11:48:27 · 1676 阅读 · 0 评论 -
Unity3D-相机跟随抖动
在U3D中当物体移动和相机跟随的刷新频率不同时,常常会出现物体抖动的问题。解决这个问题的最好方法是把相机刷新放在LaterUpdate中,能很好解决物体抖动的问题。但是如果相机在跟随物体一时,画面同时还有物体二,此时物体一和物体二的刷新频率需要保持一致,否则物体二仍然会出现抖动。例子:物体一使用rigidbody移动物体,物体二使用改变transform.posit原创 2016-10-27 11:02:53 · 8580 阅读 · 9 评论 -
Unity3D-查找资源被那里引用
using UnityEngine;using UnityEditor;using System.IO;using System.Linq;using System.Text.RegularExpressions;using System.Collections.Generic;public class FindReferences{ [MenuItem("Assets/Find转载 2017-03-31 15:16:20 · 2305 阅读 · 0 评论 -
Unity3D-屏幕截图
public static IEnumerator ScreenShot() { yield return new WaitForEndOfFrame(); int width = Screen.width; int height = Screen.height; Texture2D tex = new Texture2D(wid原创 2017-04-05 20:20:44 · 401 阅读 · 0 评论 -
Unity3D-Shader-自定义光照模型lighting model
一个最常见的的光照模型例子#pragma surface surf BasicDiffuseinline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3 lightDir, fixed atten){ float difLight = max(0, dot (s.Normal, lightDir)); float4...原创 2019-01-28 14:58:55 · 1361 阅读 · 0 评论 -
Unity3D-Shader-描边
pass{ Tags{"LightMode"="Always"} Cull Front ZWrite On CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" float _Outline; struct v2f { float4...原创 2019-01-21 15:01:24 · 853 阅读 · 1 评论 -
System.IO文件操作
using UnityEngine;using System.Collections;using System.IO; public class Test : MonoBehaviour { void Start() { CreateFileAndDirector(); WriteTextFile(); Read...转载 2019-01-18 16:37:09 · 1225 阅读 · 0 评论 -
GLSL compilation failed, no infolog provided
取消勾选GPU Skinning选择原创 2019-01-07 15:59:02 · 1176 阅读 · 0 评论 -
Unity3D-gif转Texture2D
最近在处理头像问题时遇到gif在unity中加载出现红色问号的问题,在网上查到大部分通过引入System.Drawing这个库使用Image转换使用,但是在移动平台System.Drawing依赖了其他库,一直无法实现。最后找到了一个纯C#实现的库,使用起来十分方便。UniGif GitHub地址主要使用UniGif中的两个方法GetTextureList()和GetTextureListCorou原创 2017-09-27 18:18:17 · 1463 阅读 · 0 评论 -
tolua学习笔记之一
LuaState生命周期获取使用lua方法获取表和元表使用协程使用线程使用lua创建C#对象LuaState生命周期LuaState lua = new LuaState();lua.Start();string hello = @" print('hello tolua#') ";lua.DoString(hello原创 2017-06-10 16:52:09 · 1173 阅读 · 0 评论 -
Unity3D-下载资源至本地缓存
本示例使用BestHTTP插件请求url地址下载至本地,并做缓存管理,易于扩展using System;using UnityEngine;using BestHTTP;using System.IO;using System.Security.Cryptography;public class DownloadCachesMgr : Singleton{ public原创 2017-07-11 13:47:28 · 1991 阅读 · 0 评论 -
Unity3D-优化之一 Drawcall
Drawcall什么是drawcalldrawcall数目对性能的影响什么是batch决定drawcall数目的因素drawcall的优化1. 什么是drawcall Unity每次在准备数据并通知GPU渲染的过程称为一次Draw Call。一个 Draw Call,等于呼叫一次 DrawIndexedPrimitive (DX) or glDrawElements (OGL),等于原创 2017-05-21 22:55:37 · 649 阅读 · 0 评论 -
Unity3D-模拟物理完全弹性碰撞反弹
根据入射方向得到反射方向,并保留相同速率 private Vector3 m_preVelocity = Vector3.zero;//上一帧速度 public void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "wall") {原创 2016-10-11 17:56:09 · 32471 阅读 · 9 评论 -
Unity3D-方向向量求欧拉角
根据物体移动方向,求其面向此方向时的欧拉角Vector3 velocity;Vector3 eulerAngles = Quaternion.FromToRotation(Vector3.forward, velocity).eulerAngles;原创 2016-10-11 17:32:41 · 13079 阅读 · 1 评论 -
Unity3D-加载XML配置表文件
//XMLFile1.xml<root> <goods> <item type = "1"> <param>10001</param> <param>5</param> </item> <item type = "3"> <param>10004</param>原创 2016-08-19 00:28:00 · 1253 阅读 · 0 评论 -
Unity3D-向量运算-加减点乘叉乘
1.加矢量叠加2.减终点坐标减去起点坐标(减数指向被减数)3.点乘,点积,标量积,内积(1)定义每对分量乘积之和:a·b=axbx+ayby+azbz两模相乘再乘于夹角余弦:a·b=|a||b|cosθ(2)矢量投影u为单位向量a·u为a在u方向上的投影长度(3)点积判定共线:a·b=|a||b|=ab共线反向:a·b=-ab原创 2015-12-15 22:45:17 · 3423 阅读 · 0 评论 -
Unity3D-对象池GameObjectPool
一、创建一个对象池GameObjectPool类二、使用单例模式三、定义集合存放对象(如使用字典,同一类存放在一个Arraylist中)四、定义两个方法:1.receive得到对象 2.release释放对象(1)receive方法Arraylist中有则取,无则创建,注意初始化(2)release方法存入Arraylist中,隐藏显示原创 2015-12-30 17:27:39 · 632 阅读 · 0 评论 -
Unity3D-粒子系统
Shuriken粒子系统是继Unity3.5版本之后推出的新版粒子系统,它采用了模块化管理,个性化的粒子模块配合粒子曲线编辑器使用户更容易创作出各种兵分复杂的粒子效果。创建一个粒子系统的方式有两种:1.分别选择菜单栏中的 GameObject - Create Other - Particle System2.创建一个Empty对象,在Component - Effects - P转载 2015-11-27 09:13:10 · 509 阅读 · 0 评论 -
Unity3D-FSM有限状态机
应用:AI模型(如:Animator)实例:控制怪物的AI(巡逻,攻击,逃跑)1.状态接口2.三种状态类,实现状态接口3.怪物的角色控制器(声明一个状态属性),和切换状态方法原创 2015-11-25 12:21:04 · 636 阅读 · 0 评论 -
Unity3D-项目总结-类CS射击局域网版
开发项目:类CS射击局域网版开发软件:UNITY+VS2013开发周期:3天开发过程:1.角色模型设计:添加控制器,视野,移动,动画,视野控制方式2.子弹、射击效果和弹痕设计:子弹外形,运动,碰撞,子弹、射击效果和弹痕生成和消失3.场景和UI界面设计:点击事件4.网络设计:服务器和客户端初始化,创建服务器,客户端连接服务器,创建角色,同步角色原创 2015-11-25 10:12:07 · 1189 阅读 · 0 评论 -
Unity3D-射线Ray
使用格式: //从主摄像机沿鼠标方向发出射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); //定义一个保存射线碰撞到的物体信息 RaycastHit hitInfo; //判断射线是否碰撞到物体并输出到hitInfo原创 2015-11-04 17:54:34 · 758 阅读 · 0 评论 -
Unity3D-Terrain地形编辑
1.提高降低地形2.调整至指定高度3.原创 2015-11-11 20:38:07 · 1227 阅读 · 0 评论 -
Unity3D-Mecanim动画系统-IK
//动画控制protected Animator animator;//是否开始IK动画public bool ikActive = false;//右手子节点参考的目标public Transform rightHandObj = null; void Start () {//得到动画控制对象animator = GetComponent();}转载 2015-11-10 00:25:06 · 961 阅读 · 0 评论 -
Unity3D-Mecanim动画系统-MatchTarget()目标匹配
void MatchTarget (Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, floatstartNormalizedTime,float targetNormalizedTime)例:anim原创 2015-11-10 09:12:16 · 795 阅读 · 0 评论 -
Unity3D-PlayerPrefs本地数据保存读取
通过一些setXX()和getXX()方法进行保存和读取。原创 2015-12-19 09:52:17 · 612 阅读 · 0 评论 -
Unity3D-C#扩展方法
什么是扩展方法? 扩展方法从字面上理解是指扩展的方法,而对应到面向对象编程这个格局中则是指为一个类提供的扩展方法。按照我们通常的理解,我们首先需要获得某个类的源代码,然后在这个类代码中增加成员方法,这样就可以达到为一个类提供扩展方法的目的。可是不幸地是,这种方法在没有源代码的情况下就无法奏效了,而且我们人为地去改变源代码有可能会破坏整个代码的稳定性。那么有没有一种方法能在不改变源代码的前提下转载 2015-12-19 12:16:38 · 2783 阅读 · 0 评论 -
Unity3D-扩展编辑器
继承EditorWindow类原创 2016-06-30 17:11:43 · 303 阅读 · 0 评论 -
Unity3D-动态加载资源
一、内部调用1.Resources.Load("path","type");或Resources.LoadAll("path","type");加载储存在Resources文件夹中path处的资源,必须忽略后缀名。GameObject instance = Instantiate(Resources.Load("enemy", typeof(GameObject)));原创 2015-11-11 22:59:27 · 534 阅读 · 0 评论 -
Unity3D-Invoke()
Invoke() 方法是 Unity3D 的一种委托机制如: Invoke("SendMsg", 5); 它的意思是:5 秒之后调用 SendMsg() 方法;使用 Invoke() 方法需要注意 3点:1 :它应该在 脚本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被调用;2:Invoke(); 不能接转载 2016-02-29 01:01:00 · 1229 阅读 · 0 评论 -
Unity3D-Input类Axes自定义
Positive Button:使用GetButton()时,引用的字符串名Gravity:使用GetAxis()时,返回0的速度,越大越快Sensitivity:使用GetAxis()时,达到1或-1的速度,越大越快Dead:当使用摇杆时,当Dead越大需要移动越大的距离才会有返回值(当不需要过小的返回值时使用)snap:使用GetAxis()时,如果勾选,正反按键同时按下会返回原创 2016-02-29 00:23:58 · 2491 阅读 · 0 评论 -
Unity3D-资源打包AssetBundle
[MenuItem("Custom Editor/Create AssetBunldes Main")] static void CreateAssetBunldesMain () { //获取在Project视图中选择的所有游戏对象 Object[] SelectedAsset = Selection.GetFiltered (typeof(Obje转载 2016-02-24 16:42:32 · 408 阅读 · 0 评论