- 博客(39)
- 收藏
- 关注
原创 C++Primer阅读记其三
以下两条经验准则对书写符合表达式有益:1.拿不准的时候最好用括号来强制让表达式的组合关系符合程序的逻辑要求。2.如果改变了某个运算对象的值,在表达式的其他地方不要再使用这个运算对象。对于大多数运算符来说,布尔类型的运算对象将被提升为int类型如 bool b=true ; bool b2=-b; b会先被提升为1 b2=-1 ,-1不为0,所以为true;前置递增和后置递增int i=0,j; j=++i;//j=1,i=1;前置版本得到递增后的值 j=i++;//j=1,i=2...
2022-05-11 18:50:54
168
1
原创 C++Primer阅读记其一
for循环和while循环的优缺点如下:1、在for循环中,循环控制变量的初始化和修改都放在语句头部分,形式较简洁,且特别适用于循环次数已知的情况。2、在while循环中,循环控制变量的初始化一般放在while语句之前,循环控制变量的修改一般放在循环体中,形式上不如for语句简洁,但它比较适用于循环次数不易预知的情况(用某一条件控制循环)。3、两种形式各有优点,但它们在功能上是等价的,可以相互转换。int,long,long long的区别int 与long 都是4个字节 取值范围 -2
2022-04-26 23:27:26
541
1
原创 c++stack容器知识点总结
stack容器stack<int> sta //初始化一个类型为int的栈容器 ,栈一个先进后出的数据结构 只能访问最后一个元素及访问栈顶 和弹夹原理相同sta.push(num);//从栈的最后插入一个num元素sta.pop();//删除最后一个元素sta.top();//返回栈的最后一个元素sta.size();//返回栈的大小sta.empty();//判断栈是否为空 空true 否false...
2022-04-22 21:26:53
625
原创 unity PlayerPrefs的使用
PlayerPrefs为unity提供了一个可以永久保存的数据,即使推出数据依然保留,可以进行更新写入数据写数据PlayerPrefs.setInt("level1",10);写入整形数据名为level1的数据为10;写数据PlayerPrefs.setfloat("level1f",0.1f);写入浮点型数据名为level1数据为0.1f;写数据PlayerPrefs.setstring("level1s","level-1");写入字符串数据名为level1数据为"lev
2021-07-22 17:17:38
2159
2
原创 unity 点击物体方法
void OnMouseDown()当鼠标点某物体是此方法调用;void OnMouseUp()当鼠标抬起时调用此方法;前提是该物体有碰撞体;
2021-07-22 17:03:25
1210
原创 unity 判断是否点击UI
using UnityEngine.EventSystems;EventSystem.current.IsPointerOverGameObject()点击UI为true否则为false;若某些点击某些UI不想在此范围之内,则需调整将其中的image中的Raycast Target对号取消
2021-07-22 16:59:01
549
原创 [HideInInspector]和[SerializeField]用法
[HideInInspector]是隐藏public的成员如[HideInInspector]public void InMap()public一个行数方法但不想让其在unity面板中显示,又想让其方法在其他函数中调用就用此方法;[SerializeField]就相反private一个私有成员,不想让其在其他函数中调用,但又想在函数面板中显示就用它放在成员前面,记得家[];...
2021-07-19 10:12:07
220
2
原创 unity 地图物体的随机生成
对一些2d游戏反复用一个关卡,但不希望每次的地图中物体出现的都一样,这就需要用到随机生成地图的方法;怪物也是如此;首先要得到各种预制体;如 public GameObject[] OutwallArray; public GameObject[] leaArray; public GameObject[] wallArray; public GameObject[] foodPrefab; public GameObject[] enemyPrefab;
2021-07-19 10:06:48
2727
原创 unity 重置当前关卡并保留相关数据
首先要将GameManager单例;将GameManeger挂载到有个空物体上;给主摄像机添加一个脚本Loder并将挂载GameManager的物体放入Loder中初始化;这样重新加载本关卡也只有一个GameManager ,只需修改保留GameManager中的数据即可;重新加载场景代码为using UnityEngine.SceneManagement;......if (//加载场景条件) { SceneMan
2021-07-19 09:50:54
2314
1
原创 unity脚本IEndGameObserver 接口interface
接口的作用就是所有订阅接口的代码当达成一定条件是都会执行此代码;例如,玩家死亡之后,敌人全部都应有胜利的动画,就可以用此方法;首先创建一个接口代码using System.Collections;using System.Collections.Generic;using UnityEngine;public interface IEndGameObserver { void EndNotify();}因为他是接口所以是interface而不是一般的class只需要
2021-07-12 17:27:41
300
2
原创 unity泛型单例模式Singleton
一般的单例只要继承了泛型单例自身便不需要实现单例的代码也是单例,相当于为多数单例提供一个模板,节约时间。如using System.Collections;using System.Collections.Generic;using UnityEngine;public class Singleton<T> : MonoBehaviour where T:Singleton<T>{ private static T instance; publi
2021-07-12 16:51:23
2142
原创 unity创建资源文件ScriptableObject
他和一般的脚本一样,但是他不是包涵在MonoBehaviour下,而是在ScriptableObject中如using System.Collections;using System.Collections.Generic;using UnityEngine;[CreateAssetMenu(fileName ="New Date",menuName ="Character Stats/Date")]public class CharacterData_SO : ScriptableOb
2021-07-12 16:30:16
1030
原创 判断一个点是否满足可移动的区域的方法NavMesh.SamplePosition
NavMesh.SamplePosition(Vector3 center,out hit,float range,NavMesh allAreas)首先他的返回值为bool 类型;这个hit为NavMeshHit类型,它表示这个点的相关信息,如他的position;如果以center的相关范围range返回该点的信息hit看它是否满足在可行区域如一般可行区域Walkble为1;所以测是为可行区域时NavMesh allAreas填1即可;这样就可以知道这个点是否可以通行
2021-07-06 16:26:37
3991
原创 判断玩家是否在敌人的可视范围的方法Physics.OverlapSphere
Physics.OverlapSphere(Vector 3 position,float radius)该方法判断以一个点为中心,半径为radius的球中的碰撞体集合;所以返回值可以用 var 如varcolliders=Physics.OverlapSphere(Vector 3 position,float radius)若想检测玩家必须先给玩家添加碰撞体;提供一种方法是检测碰撞体的标签Tag若是玩家的标签就可以进行下一步判断如foreach(var target in co.
2021-07-06 16:13:18
544
原创 Navigation(自动寻路系统)与Nav Mesh Agent
Nav Mesh Agent组件可以实现对指定对象寻路的代理,该组件自带了许多参数,可以通过修改Nav Mesh Agent组件的参数来实现对代理器大小,速度,加速度的控制,参数有Agent Type 代理类型Base Offset 代理器相对导航网络的高度偏移Speed 代理器移动速度Angular Speed 代理器角速度Acceleration 代理器加速度Stopping Distance 代理器到达时与目的地的路线Auto Braking 是否自动停止无法到达目的.
2021-07-02 19:03:05
1029
1
原创 RaycastHit了解
RaycastHit常常为发射射线产生的碰撞信息RaycasHit是一种类型它有很多属性值,如collider(碰撞器),Point(点),rigidbody,transform等。常常与Ray一起使用如RaycastHit hitInfo;Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray,out hitInfo)) {
2021-07-02 18:23:22
1585
原创 unity Input输入对象
intput中的主要变量,mousePosition(当前鼠标指针的像素坐标)anyKey(当前是否有按键按下,有,返回true)anyKeyDown(用户单击任何键或者鼠标按钮,第一帧返回true)inputString(返回键盘输入的字符串)acceleration(加速度传感器的值)touches(返回当前出没(Touch)列表)Input.GetMouseButtonDown(0) //是否按下鼠标左键 返回值为trueInput.GetMouseButton..
2021-07-02 18:10:52
344
原创 unity 中使角色按键更灵敏。
首先说明一下我开始遇到的一点问题(开始做坦克大战时设置j为攻击偶尔按j总是不发射子弹,开始以为是键盘坏了,后来才知道是自己脚本的编写方式有问题)在写c#脚本时要将物体运动什么的相关代码放入FixedUpdate()中,将判断键盘的输入判断放入Update()中这样就会使运动或者键盘输入变的灵敏;例如private void Update() { if (Input.GetButtonDown("Jump")) { jumpIsPr
2021-06-23 16:25:03
1022
1
原创 unity 数字键的输入及刚体的速度的设置
unity中c#脚本语言中偶尔要判断数字键的输入;Input.GetKeyDown(KeyCode.Keypad1);Input.GetKeyDown(KeyCode.Keypad1)
2021-06-16 11:55:48
1754
2
原创 游戏开发unity 碰撞器与触发器以及方法
给物体t添加碰撞器如图(创建2d游戏时一定要创建2d的碰撞器);若将is Trigger勾选则为触发器,我是这么理解的。在游戏开发时有时候后遇到一个物体碰到一个物体时会发生什么例如:敌人碰到敌人;碰撞器方法 private void OnCollisionEnter2D(Collision2D collision) { switch(collision.transform.tag) { case "invincible": ..
2021-06-12 16:53:30
905
3
原创 游戏开发中单例模式的用法与好处(c#)
public class PlayerManage : MonoBehaviour{ public int lifeValue1 = 3; public int lifeValue2 = 3; public int playerScore = 0; public bool isDead1; public bool isDead2; public bool isDeaf; public bool isDie1; public bool isDi...
2021-06-12 16:30:15
404
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人