自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

游戏人生

https://github.com/wangshucheng

  • 博客(59)
  • 资源 (1)
  • 收藏
  • 关注

原创 Lua-可变参数...与select()方法

local test = {}function test:selectFunc1( ... ) print(select("#",...)) print(#{...}) -- print(unpack({...})) print(...) print(select(1,...)) print(select(-1,...)) print(select(-2,...))endtest:selectFunc1(1,"test",{})结果:331 test t...

2020-07-06 10:43:14 311

原创 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 2336 2

原创 生产消费者模式与订阅发布模式(观察者模式)区别

订阅发布模式是一种特殊的生产消费者模式区别:1.消息是否被多个对象处理。生产消费者是所有消费者抢占消息,订阅发布是所有订阅者共享消息。2.主动权不同。生产消费者主动权在消费者,订阅发布主动权在发布者。也就说订阅者是把主动权交给了发布者,从代码层面更好的实现解耦。...

2020-03-02 11:45:41 2225

原创 Unity3D-后期处理 Post-process Volume Profile

Ambient Occlusion 环境光遮罩:用来使像是世界中难以照射到光线的角落,交叉点等地方变暗。Anti aliasing:抗锯齿:抗锯齿功能提供的算法可以是锯齿感明显的边缘更加平滑,虽然锯齿感减少,却会使物体变得模糊。Auto Exposure 自动曝光:模拟人眼适应各种黑暗与光亮的效果,比如从黑暗的隧道出来时,人眼会有短暂时间的炫目。Bloom 辉光:最常用的Post-proce...

2020-01-09 12:21:49 5356

原创 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 1346

转载 Unity3D-Shader-Forward渲染路径

一渲染细节:根据影响物体的光源不同,正向渲染用单个或者多个通道来渲染物体; 在正向渲染中光源本身也会根据他们的设置和强度受到不同的对待。 实现细节: 渲染通道:ForwardBase和ForwardAdd是专门为在Forward渲染路径下渲染物体而设计的两种Pass。其中ForwardBase会优先于ForwardAdd渲染。 在正向渲染中,影响物体最亮的几个光源使用逐像素光照模式(pe...

2019-01-22 17:53:32 776

转载 Unity3D-Shader-混合(Blend)

转载自风宇冲博客 Alpha Blending,中文译作Alpha混合Blending就是控制透明的。处于光栅化的最后阶段。这里例如我们给一个模型贴一个材质,那么在某个点计算出来颜色值称为源,而该点之前累积的颜色值,叫目标。 语法Blend Off     不混合Blend SrcFactor DstFactor  SrcFactor是源系数,DstFactor是目...

2019-01-22 10:13:57 1308 1

原创 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 844 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 1217

原创 VS工程配置头文件(.h)、静态库(.lib)和 动态库(.dll )

由于VS历史问题,配置静态库有两个效果一样的方法C/C++和VC++C/C++: Additional Include Directories1.头文件(.h)添加:工程-->属性-->配置属性-->c/c++-->常规-->附加包含目录(Additional Include Directories):加上头文件存放目录。使用:在使用代码处引用这个头文件,...

2019-01-07 17:59:12 1780

原创 GLSL compilation failed, no infolog provided

取消勾选GPU Skinning选择

2019-01-07 15:59:02 1145

原创 Unity3D-gif转Texture2D

最近在处理头像问题时遇到gif在unity中加载出现红色问号的问题,在网上查到大部分通过引入System.Drawing这个库使用Image转换使用,但是在移动平台System.Drawing依赖了其他库,一直无法实现。最后找到了一个纯C#实现的库,使用起来十分方便。UniGif GitHub地址主要使用UniGif中的两个方法GetTextureList()和GetTextureListCorou

2017-09-27 18:18:17 1441

原创 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 1957

原创 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 1166

原创 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 467

转载 Android Studio在libs中添加jar包

sourceSets { main { jniLibs.srcDirs = ['libs'] } }

2017-05-26 10:23:38 850 1

原创 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 622

原创 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 364

转载 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 2275

原创 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 20838

转载 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 5702 1

原创 中级Unity3D开发工程师-面试经验总结

以下为面试Unity3D开发工程师时总结的10个问题1.在上一家公司负责的工作业务开发平台接入经分接入2.开发过哪些模块好友系统邀请系统托管系统留言系统礼包兑换登录奖励活动积分活动充值活动3.做过哪些性能优化(内存,DC)控制资源大小,打图集,共用纹理检查drawcall,100多保证每个界面流畅加载AB后的释

2017-03-17 13:59:20 7580

原创 C#-消息队列系统

C#消息队列系统简单实现通过AddEvent()添加监听事件 通过调用DoEvent()触发事件 消息系统内置一个消息队列,通过不断轮询调用 public abstract class IEventManager { public delegate void EventDelegate(byte[] stream); Dictionary<int, D

2017-03-17 13:50:29 2783

转载 C#-初始化器和构造函数初始化器

初始化器分为对象初始化器和集合初始化器。下面一一介绍。对象初始化器对象初始化器的作用,简单点说就是可以使我们初始化一个类的代码变得更简洁。比如下面这个类:class Person{ public string Name { get; set; } public int Age { get; set; } public string Address

2016-12-27 19:56:30 4865

原创 Unity3D-各平台文件读写操作路径目录

public string AssetCachesDir { get { string dir = "";#if UNITY_EDITOR dir = Application.dataPath + "Caches/";//路径:/AssetsCaches/#elif UNITY_IOS

2016-12-17 11:21:08 4706

原创 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 14189

转载 编程基础设计与算法-24种设计模式和7大原则

设计模式  简单工厂模式:  用一个独立的类来做这个创造实例的过程  聚合表示一种弱的"拥有关系",体现的是A对象可以包含B对象,但B对象不是A对象的一部分。  合成表示一种强的"拥有关系", 体现了严格的部分和整体的关系,部分和整体的生命周期一样。  优点:工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类。,对于客户端来说,去除了与具体产品的依赖。

2016-11-25 16:08:00 434

转载 C#-Reflection反射

两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(我不是医生也不是声学专家,不知说得是否准确^_^)。2、地球内部结构:地球的内部结构大体可以分为三层:地壳、地幔和

2016-11-17 17:22:46 317

转载 加密-C#获取文件MD5值方法

private static string GetMD5HashFromFile(string fileName) { try { FileStream file = new FileStream(fileName, FileMode.Open); System.Security.Cryptography.MD5

2016-11-17 14:51:10 414

转载 C#-System.IO.Path 用法解析

举例定义 string filePath =@"E:/Randy0528/中文目录/JustTest.rar";方法说明效果System.IO.Path.ChangeExtension(filePath, "txt")更改路径字符串的扩展名E:/Randy0528/中文目录/JustTest.txtSyst

2016-11-17 10:08:07 6783

原创 Unity3D-相机跟随抖动

在U3D中当物体移动和相机跟随的刷新频率不同时,常常会出现物体抖动的问题。解决这个问题的最好方法是把相机刷新放在LaterUpdate中,能很好解决物体抖动的问题。但是如果相机在跟随物体一时,画面同时还有物体二,此时物体一和物体二的刷新频率需要保持一致,否则物体二仍然会出现抖动。例子:物体一使用rigidbody移动物体,物体二使用改变transform.posit

2016-10-27 11:02:53 8496 8

原创 Unity3D-模拟物理完全弹性碰撞反弹

根据入射方向得到反射方向,并保留相同速率 private Vector3 m_preVelocity = Vector3.zero;//上一帧速度 public void OnCollisionEnter(Collision collision) { if (collision.gameObject.name == "wall") {

2016-10-11 17:56:09 32392 9

原创 Unity3D-方向向量求欧拉角

根据物体移动方向,求其面向此方向时的欧拉角Vector3 velocity;Vector3 eulerAngles = Quaternion.FromToRotation(Vector3.forward, velocity).eulerAngles;

2016-10-11 17:32:41 13022 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 1247

原创 Unity3D-扩展编辑器

继承EditorWindow类

2016-06-30 17:11:43 300

转载 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 1226

原创 Unity3D-Input类Axes自定义

Positive Button:使用GetButton()时,引用的字符串名Gravity:使用GetAxis()时,返回0的速度,越大越快Sensitivity:使用GetAxis()时,达到1或-1的速度,越大越快Dead:当使用摇杆时,当Dead越大需要移动越大的距离才会有返回值(当不需要过小的返回值时使用)snap:使用GetAxis()时,如果勾选,正反按键同时按下会返回

2016-02-29 00:23:58 2459

转载 C#-dynamic及动态绑定

在通过 dynamic 类型实现的操作中,该类型的作用是绕过编译时类型检查,改为在运行时解析这些操作。 dynamic 类型简化了对 COM API(例如 Office Automation API)、动态 API(例如 IronPython 库)和 HTML 文档对象模型 (DOM) 的访问。

2016-02-26 15:29:09 1867 1

转载 Unity3D-资源打包AssetBundle

[MenuItem("Custom Editor/Create AssetBunldes Main")] static void CreateAssetBunldesMain () { //获取在Project视图中选择的所有游戏对象 Object[] SelectedAsset = Selection.GetFiltered (typeof(Obje

2016-02-24 16:42:32 406

转载 Unity3D-加载AssetBundle

//不同平台下StreamingAssets的路径是不同的,这里需要注意一下。 public static readonly string PathURL =#if UNITY_ANDROID "jar:file://" + Application.dataPath + "!/assets/";#elif UNITY_IPHONE Applicat

2016-02-24 16:41:15 809

Best HTTP2_v2.2.0.unitypackage

如果你想要一个可以通过 HTTP/2 支持 REST、WebSocket、Socket.IO、SignalR、SignalR Core、Server-Sent Events(以及更多)的自定义请求并且具有开发者定期更新和出色支持功能的现成插件,那么 BestHTTP/2 就是你需要的!

2020-11-11

空空如也

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

TA关注的人

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