游戏研发 奇技淫巧(持续更新中)

目录

语言篇:

C#

1.Enum转数组:

2.多重排序

3.数组合并

4.定时器的使用

5.正则表达式

6.C# 类型方法扩展:

7.C# Directory.GetFiles()获取多个类型格式的文件

8.c# List获取重复项

9.C# 多个个Dictionary合并更优雅的写法

10.Vector3.Dot 前后判断

11.c# – 具有可变参数的函数的委托

引擎篇:

Unity:

1.判断各种平台

2.屏幕是否休眠

3.坐标间的转换与旋转

4.rigibody 刚体约束RigidbodyConstraints

5.Unity3d获取ParticleSystem里面的材质球的方法

6.Unity2019中简单实现音效与背景音乐的管理

插件使用

1.DOTween



修行多年,越混越惨,道爷儿很郁闷


语言篇:

C#

1.Enum转数组:

System.Enum.GetValues(typeof(EnumKind));

2.多重排序

using System.Linq;//需要引用new string[] { "1", "2", "3", "4" }.Concat(new string[] { "a", "b" }).ToArray();

4.定时器的使用

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();

5.正则表达式

System.Text.RegularExpressions.Regex.IsMatch("nmb", @"^[-]?\d+[.]?\d*$");

6.C# 类型方法扩展:

以字串类型为例:

" 你的偶像是{0}".TTOFormat("张国荣","本山","不二做");

1.1.ToInt();

作用:极大的提升开发效率,减少垃圾代码的出现

public static class TTOFormatHelper
{/// /// 字符串格式化新增扩展/// ///  this T para/// 可变参数数组/// public static string TTOFormat(this string _str, params object[] values){return string.Format(_str, values);}public static int ToInt(this float _float){return (int)_float;}
}

7.C# Directory.GetFiles()获取多个类型格式的文件

    //方式1 优点:实时判断所属平台if (Application.platform == UnityEngine.RuntimePlatform.Android || Application.platform == UnityEngine.RuntimePlatform.IPhonePlayer){}UnityEngine.Debug.Log("当前平台是"+Application.platform.ToString());//方式2: 缺点 : 受当前的工程设置影响//#if UNITY_IOS || UNITY_ANDROID//            databasePath = string.Format("{0}/{1}", Application.streamingAssetsPath, DATA_BASE_NAME);//#else//             databasePath = string.Format("{0}/QFPassionSpeedLine/DataBase/{1}", Application.dataPath, DATA_BASE_NAME);//#endif

2.屏幕是否休眠

1.最简单的旋转代码,只需要输入旋转的轴向和旋转速度就可以实现自身的旋转了this.transform.Rotate (Vector3.up * rotaSpeed);2.围绕某个点的旋转,参数分别是 1.需要围绕的点 2.旋转的轴向 3.旋转的速度this.transform.RotateAround (Vector3.zero, Vector3.up, rotaSpeed);3.旋转的角度rotaSpeed += Input.GetAxis("Horizontal");transform.eulerAngles = new Vector3(0, rotaSpeed, 0);4.旋转的角度float tiltAroundZ = Input.GetAxis("Horizontal")*30;float tiltAroundX = Input.GetAxis("Vertical")*30;Quaternion target = Quaternion.Euler(tiltAroundX, 0, tiltAroundZ);transform.rotation = Quaternion.Slerp(transform.rotation, target, Time.deltaTime * 2);

4.rigibody 刚体约束RigidbodyConstraints

RigidbodyConstraints为枚举类型; 
(|:可以理解为又啊又啊又) 
全部锁定: 
rigidbody.constraints = RigidbodyConstraints.FreezePositionX| RigidbodyConstraints.FreezePositionY| RigidbodyConstraints.FreezePositionZ; 
全部解锁: 
rigidbody.constraints -= RigidbodyConstraints.FreezePositionX| RigidbodyConstraints.FreezePositionY| RigidbodyConstraints.FreezePositionZ; 
只解锁一个(例如X轴其他全部冻结): 
rigidbody.constraints ~= RigidbodyConstraints.FreezePositionX

5.Unity3d获取ParticleSystem里面的材质球的方法

放在这是因为找了半天才找到,郁闷,估计此问题会随unity的版本更新而导致获取方式不一致

Renderer yuanPs =transform.GetComponent();
yuanPs.material;

6.Unity2019中简单实现音效与背景音乐的管理

    主要是方法 AudioListener.volume = 0; 直接控制音量大小,实现最简单的管理
 

     menuGUI.music.onValueChanged.AddListener(s => {DisableMusicButton(menuGUI.music);});menuGUI.audio.onValueChanged.AddListener(s => {DisableAudioButton(menuGUI.audio);});public void DisableAudioButton(Toggle toggle){if (toggle.isOn){AudioListener.volume = 1;PlayerPrefs.SetInt("AudioActive", 0);}else{AudioListener.volume = 0;PlayerPrefs.SetInt("AudioActive", 1);}}public void DisableMusicButton(Toggle toggle){if (toggle.isOn){menuMusic.GetComponent().mute = false;PlayerPrefs.SetInt("MusicActive", 0);}else{menuMusic.GetComponent().mute = true;PlayerPrefs.SetInt("MusicActive", 1);}}

8.Android 和IOS获得应用的包名

Application.identifier
 

插件使用

1.DOTween

//简单使用 (通过插值的方式去修改一个值的变化)DOTween.To(() => myValue2, x => myValue2 = x, 10, 2);Tweener tweener = transform.DOLocalMoveX(0, 2);tweener.SetEase(Ease.OutBounce);//动画曲线tweener.OnComplete(OnTweenComplete);//动画结束事件tweener.SetLoops(2);//动画循环次数

è¿éåå¾çæè¿°

跳跃,冲压机

DOJump(new Vector3(5, 0, 0), 5, 1,5);假设cube坐标(0,0,0)最终跳跃到(5,0,0)位置,跳跃的中间最高度是5,跳跃1次,5秒完成
DOPunchPosition(new Vector3(10, 10, 10), 5);在 5 秒内在原始坐标和下面坐标之间,来回冲压
DOPunchRotation(new Vector3(50, 50, 50), 5);在 5 秒内在原始旋转和下面角度之间,来回冲压变化
DOPunchScale(new Vector3(5, 5, 5), 5);在 5 秒内在原始比例和下面比例之间,来回冲压变化

控制Itween方法:

DOComplete();   执行该方法,变化立即结束,且完成移动
DOFlip();   在变化过程中执行该方法,则物体慢慢的变回原样,如果变化已经完成,该方法无效
DOGoto(2);变化过程中执行该方法,则物体变化到 第二秒 时该物体的位置、比例等
DOKill();停止掉当前的变化
DOPlayBackwards();播放结束之前,让物体倒序运动到原位
DOPlayForward();播放结束之前,让物体继续运动到目标位置
DORestart();   在变化结束之前,执行该方法,则重新开始变化
DORewind();变化过程中执行该方法,回到原始
DOPause();停止
DOPlay();开始


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部