自己在网站做邮箱百度竞价排名广告定价

张小明 2026/1/11 9:23:55
自己在网站做邮箱,百度竞价排名广告定价,营销型企业网站案例,wordpress广告不显示来了来了#xff0c;unityC#的组合终于来了#xff01; 首先我们介绍一个对默认初始布局代码的更改 因为到了后期每个人都会产生属于自己专属的亦或是工程要求的模版。所以改变初始代码布局也是一个必备技能 这个虽然我们前期不咋需要#xff0c;但可以交付于后面的小伙子…来了来了unityC#的组合终于来了首先我们介绍一个对默认初始布局代码的更改因为到了后期每个人都会产生属于自己专属的亦或是工程要求的模版。所以改变初始代码布局也是一个必备技能这个虽然我们前期不咋需要但可以交付于后面的小伙子1.对桌面上的unity应用程序右键打开文件所在文件夹2.在文件夹中找到Date文件夹3.在Date文件夹中找到Resourse文件夹4.在resource文件夹中找到scripttample文件夹5.在scripttample文件夹中找到81序号的文件并以vs打开6.接下来就可以自定义代码布局了。7.记得改完之后要保存。介绍一下字段修饰在unity编辑的时候我们有些时候需要调节脚本里面的参数来达到我们预期的效果。如果每次实例效果之后再去脚本里面改太过麻烦。这是我们就可以采用字段修饰的方法在unity中直接显示或者更改相关参数这便是度脚本参数的字段修饰。一般的形式是在参变量的上方加上[xxx]或者加上前缀。上干货private int a100private私人的那么在unity上就不会被显现public int a100;public 公开的那么在unity上可以显现并且可以更改且更改值将成为最终值脚本中只是做了初始化。这里我们解释一下public与private的另外一个重要功能区别public在类中若是用于类的数据成员的修饰那么在主程序中便可以直接进行修改但若是在类的方法成员中对数据成员的值进行了限制那么强行在外面非法修改会使该方法不被执行造成一些牛马的问题。这个时候使用private就可以很好的解决这个问题[range(1,100)]public int a100;显现在unity中并a的值可以在range中更改全闭[HideInInspector]public int a100;将能显现的进行隐藏[SerializeField]private int a100将不能显示的显示出来介绍脚本生命周期的阶段知识点注意这边介绍的都是相当于函数的东西每个函数名都有他的功能不可随意更改函数名具体的方法写在这些函数中初始阶段###物理阶段###逻辑阶段我们的游戏逻辑主要放在update里面而lateupdate可以放跟随作用的摄像机视角。###输入事件典型 的鼠标输入###场景渲染这个是个好东西当摄像机照到时执行某个事件onbecamevisible当摄像机没照到时执行某个事件onbecameinvisible各个类的功能理解2024年3月5日08:27:52把C#基础捋一遍后我们得到了跟多的知识现在再回过来看unity的内容会比较清晰。unity中要掌握的我觉得就是各个方法类的使用了解它是干什么的懂得如何去使用这是学习的重点。那么就开造吧TransformGameObject用来创查找对象可以在对象上添加组件添加一个光源那就是手电筒component组件类管组件信息的。Time这个是时间接口调用时间的相关方法介绍TIme.deltatime指的是渲染所花的时间这保证了渲染的均衡性因为每个机器的配置不同渲染的速度也不同乘上上每台机器特异的deltatime我们就可以达到均衡的效果介绍TIme.timescale这个可以控制时间的流动!相当于The world的效果还可以减速即达到慢动作。当他等于0时方法fixedupdate直接被停止运行而update不收影响。这个是好东西然后还有其他好多好多结合实际看来还是在联系中熟练比较ok我们来做些小练习如何制作小地图由于小地图的制作需要联合uGUI的知识点。我们这里只是进行一些必要的C#代码解释首先 厘清好思维我们需要一个小地图 需要的元素是 map的recttranslation 用于确定我们各个元素于小地图的相对位置这里把所有的小地图上出现的活动元素归为map的子物体可以较好的实现 player transform用于绑定map上的图标与实际player的运动有点映射的滋味。 Image item Image player_image 在这两个我们要理清楚 我们会预制一个item这个item里面是我们想要的player图标执行instantiate时他会在场景中创建一个item图像之后我们把这个图像的信息赋值给player_image对player_image的recttranslation进行修改改变其在map上的位置来实现小地图上player移动功能。 private RectTransform rect; private Transform player_transform; private Image item; private Image player_image; // Start is called before the first frame update void Start() { item Resources.LoadImage(Image); rect GetComponentRectTransform(); player_transform GameObject.FindWithTag(Player).transform; if (player_transform ! null) { player_image Instantiate(item); } } 这上面的是游戏初始化时的图标显现和相关信息的赋值 下面的是动态的图像渲染每此update执行都会产生渲染一个新的图片。 // Update is called once per frame void Update() { player_image.rectTransform.sizeDelta new Vector2(20,20); player_image.rectTransform.anchoredPosition Vector2.zero; player_image.transform.SetParent(transform,false);设置父物体这里的transform即map的transform因为我们的脚本放在map上的后面的bool值好像是世界坐标的是否。 player_image.sprite Resources.LoadSprite(Texture/Py);因为我每帧都产生新的图片所以要给每次的图片的精灵图元素进行赋值。 player_image.rectTransform.eulerAngles new Vector3 (0,0,-player_transform.eulerAngles.y); 这里通过映射把实际player的旋转角和图像的旋转联系起来。 }查找所有敌人中血量最少的敌人public class findTheMinus : MonoBehaviour { public void OnGUI() { if (GUILayout.Button(按我检测)) { enemy[] enemies Object.FindObjectsOfTypeenemy(); enemy min GetEnemy(enemies); min.GetComponentMeshRenderer().material.color Color.red; } } public enemy GetEnemy(enemy[] all_the_enemy) { enemy enemy all_the_enemy [0]; for(int i 1; i all_the_enemy.Length;i) { if (enemy.HP all_the_enemy[i].HP) { enemy all_the_enemy[i]; } } return enemy ; }这个练习我们认识到系统的创建对象理解类的含义确实还是有很多的帮助的看看之前的project1太乱了知道类的组成后思路逐渐清晰。##在父物体中寻找根据名称寻找子物体public static Transform findyouchild(Transform father, string SonName) { Transform RightSon father.Find(SonName); for (int i 0; i father.childCount; i) { if (RightSon ! null) { return RightSon; } else if (RightSon null) { findyouchild(RightSon, SonName); } } return null; }这是递归的方法好像深度搜索。根据名字搜索父对象中的子物体public class findyouchild : MonoBehaviour { public static Transform Findyouchild(Transform father, string SonName) { Transform Rightson father.Find(SonName); if (Rightson ! null) { return Rightson; } int count_child_numberfather.childCount; for (int i 0; i count_child_number; i) { Transform Rightson1 Findyouchild(father .GetChild(i),SonName); if(Rightson1 ! null) { return Rightson1; } } return null; } void Update() { if (Input.GetKey(KeyCode.F)) { Transform rightson1 Findyouchild(this.transform, Cube (2)); rightson1.GetComponentMeshRenderer().material.color Color.green; } } }时间的限制我们在一些情况下需要精确的秒计算来实现某个功能而unity的是帧计算0.02s这种为了达到效果我们需哟啊自己编写脚本来限定时间。提供几个思路设立一个总计时器time1Time.time还有一个下一秒限制器time21若要实现一秒即在每帧中判断iftime1time2{这里写一秒时间节点的需求。time2time1}这里的逻辑是利用帧的短时差因为帧的时间为0.02级那么我们可以通过整数的值差达到限制时间的效果。设立一个累加器累加deltatime当deltatime累加到1时说明过了一秒那么就执行你想要的操作并在最后将deltatime归为0还有一个就是在start 时调用直接解决。倒计时的制作这个我们要用到文本ui注意这里组件的类public class TheCountDown : MonoBehaviour { TextMeshProUGUI textMeshPro; public int second180; public float next_time1; // Start is called before the first frame update void Start() { textMeshPro this.GetComponentTextMeshProUGUI(); } // Update is called once per frame void Update() { if (Time.time next_time) { second--; if (textMeshPro ! null) { textMeshPro.text string.Format({0:d2}:{1:d2}, second / 60, second % 60); next_time Time.time 1; } } } }这里练习了文本UI的基本操作敌人固定路线巡逻using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; ///summary /// ////summary public class fixedwayline : MonoBehaviour { public Transform way_lines_root; public Transform[] waylines; public Transform[] waypoints; public int speed 1; public int the_current_point0; // Start is called before the first frame update void Start() { waylines new Transform[way_lines_root.childCount]; for (int i 0; i way_lines_root.childCount; i) { waylines[i] way_lines_root.GetChild(i); } int the_random_line Random.Range(0, waylines.Length);//得到随机数并由此得到随机的路线。 Transform the_right_line waylines[the_random_line];//这条随机出的路线被改名为正确的路线 the_right_line waypoints new Transform[the_right_line.childCount]; for (int i 0; i the_right_line.childCount; i) { waypoints[i] the_right_line.GetChild(i);//把这条路线的路线点放入waypoints数组中.我们就得到了含有所经路线位置的数组. } } // Update is called once per frame void Update() { find_way(); } public void look_the_point(Vector3 point) { this.transform.LookAt(point); } private void move_forword() { this.transform.Translate(0, 0, 5 * Time.deltaTime * speed, Space.Self); } private bool find_way() { if (waypoints null || the_current_point waypoints.Length) { return false; } else { look_the_point(waypoints[the_current_point].position); move_forword(); if (Vector3.Distance(this.transform.position, waypoints[the_current_point].position) 0.5f) { the_current_point; } return true; } } }这里包含了路线的随机选择向目标点的转向前进。放大与缩小瞄准镜public class TheGunSight : MonoBehaviour { Camera camera; bool open; public bool bigger_stste false; public int[] the_bigger_level; public int level0; // Start is called before the first frame update void Start() { camera GetComponentCamera(); } // Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { level; if (level the_bigger_level.Length) { open true; } else { open false; } } if (!bigger_stste open true) { camera.fieldOfView Mathf.Lerp(camera.fieldOfView, the_bigger_level[level], 0.1f); } if (open false) { camera.fieldOfView Mathf.Lerp(camera.fieldOfView, the_bigger_level[0], 0.1f); open true; level 0; } if (Input.GetMouseButtonDown(1)) { level 0; camera.fieldOfView Mathf.Lerp(camera.fieldOfView, the_bigger_level[level], 0.1f); } } }这里我们学到了我去寻找某个物体身上的组件那么首先要声明一个该组件的对象再将组件赋值给这个对象。之后再调用对象中的组件元素。我们来介绍一些杂七杂八的知识点在我们进行实操的时候我们可能会遇到一些迷茫的事情就比如说我们脚本要写改颜色但我们不知道改颜色要在哪里改在那个父级方法里面找。这时候可以看看unity里面的星系通常里面的顺序就可以按时出具体的方法在哪里就比如说我们想要改颜色那么就可以联想到渲染进而想到材质那么就可一顺腾摸瓜找到材质的结构this.GetComponent MeshRenderer ().material.color Color.green;这里的this在不做其他修饰的情况下指的就是物体本身。位置的变换也是如此一个verygood的方法invokeinvokerepeat方法名从第几秒开始间隔的时间可以让一个方法于什么时候开始调用隔多少时间调用一次。invoke方法名从第几秒开始从第几秒开始调用方法。关于一个数学函数lerp对一个变量使用mathf.lerp方法时可以让该变量实现从起始变量到中点变量由快到慢或由慢到快变化。这个可以制造出一种渐变就比瞄准镜的放大缩小过渡。Mathf.Lerp(camera.fieldOfView, 20, 0.1f)中为起点终点变化速率。据现在的已知信息z的正半轴为正前方x 的正半轴为正右方运动正半轴为正上方。进入牛马的重要部分三维数学介绍unity中的重要类vector 向量什么是向量物体的位置就可以成为一个向量对象他的理论知识点同数学上的知识点在C#中有三个方法可以求得向量的长度大小。那向量的方向怎么描绘出来捏Vector3 a1 Camera.main.transform.position; Vector3 a2 a1 /a1.magnitude; Vector3 a3 a2.normalized ;对于一个向量描绘他的方向我们用与之方向相同的单位向量来表示那么获得单位向量我们需要三步第一将该向量创建出来第二。将该向量的大小变为1第三将该向量归一化也叫标准化向量。那这个玩意有什么用捏向量包含反向和大小那么显而易见可以放到Translate方法中最为运动参数。一般我们要把向量进行归一化再放进去。介绍角度弧度转化根据已有的数学小知识我们学习下如何用代码进行相应转化角转弧60–》pi/360*(pi/180)或者调用数学方法float degree60*Mathf.Deg2Rad;这个还是挺好理解的deg即degree角度2谐音同two即torad弧度。弧转角p1/3–60度p1/3*(180/p1)或者调用数学方法float rad Mathf.PI / 3 * Mathf.Deg2Rad;介绍向量求角度我们在高中数学中学到的方法可以运用到这里来面对实际问题灵活使用数学终于可以为实践服务了介绍几个方法在C#中向量相乘并不是简单的中间加个乘号就可以了要使用vector方法。点乘法根据公式向量a*向量b|a||b|cosx我们若是行求得ab之间的角度那么就要求得x那么xarccos向量a * 向量b/|a||b|之后这边的x一般表示方式为弧度所以之后再来个弧转角就OK咯。float aVector3.Dot (a1.normalized,a2.normalized);float haMathf.Acos(a)*Mathf.Rad2Deg;叉乘法使用这个课以判断两个物体的相对位置在走边为。右边即为负、通过这个可以克服点乘值域只有180-0的问题。介绍欧拉角这个玩意是表示旋转程度的概念xyz组成分别表示在xyz轴上的旋转角度。一个欧拉角存储在向量类里面所以看到vector3 a。可能不一定就是向量还有可能是欧拉角欧拉角没有方向和大小。在对一个为物体的欧拉角做出改变时以这样的形式操作。Vector3 ol this.transform.eulerAngles;ol new Vector3(1, 0, 0);或者直接这么写this .transform.eulerAngles new Vector3(1,0,0) ;他们表示在x轴的旋转角度上加上1。并且001就是vector.forword。但是欧拉角存在一个大问题叫作万向节死锁x轴转到90度就转不动了。所以欧拉角一般来用作简单的旋转所以为了解决这个牛马的问题我们迎来了四元数介绍四元数四元数顾名思义他是通过四个数来确定物体的旋转根据公式我们可以得到这四个数那怎么用捏确定旋转轴与旋转的角度之后带入代码即可。它可以根据任何一个向量作为轴使得复杂度大打提高。但我们不必再进行旋转操作时不断的把这个代码写一遍处了包装方法外unity还给我们准备了方法。a1.rotation Quaternion.Euler(0,50,0);以向量a1为轴于y轴旋转50度。两个四元数进行相乘为叠加。比如我把a1.rotationxxx,是把a1改到某个角度而相乘就是说把a1进行当前位置上的叠加旋转。而这种叠加的写法unity也提供了一种方法简便操作。transform.Rotate(0, 0, 0);欧拉角与四元数的转换专研欧拉角作为三维数学中的大头我们必须把这个玩意怎么用怎么用的方便怎么去理解怎么去思考等等搞清楚不然将成为日后的诟病把这个牛马狠狠的啃掉怎么去使用首先我们进行一波语法规范若是想要进行某个物体的角度改变使用欧拉角的话。我们规定以下规范this.transform.eulerAngles new Vector3(1, 0, 0);某物的欧拉角之前的欧拉角加上新的欧拉角。以上是欧拉角的基本用法为了避免万向节死锁我们继续搞四元数还是规范语法this.transform.rotation Quaternion.Euler(40,0,0);某物的旋转我给出的四元数角度this.transform.rotation*Quaternion.Euler(40,0,0);某物的旋转我给出的四元数角度加上已有的四元数角度注意这里的加表示为*。由上面的规范我们进而可以看出欧拉角的计算要调出爱物体的欧拉角对象才能进行相应的计算rotation是四元数对象两个四元数相乘表示叠加。而欧拉角与四元数的相互转换我们在上面也提到了。复杂情景的向量角度运算在基础的旋转指令结束后真正困难的其实还是向量的理解。向量在unity其实是个坐标。万平米在数学中经常用坐标进行计算但在这里就感觉很抽象就比如向量a向量b弱项表示向量ab即用b-a但在unity中显现的是一个坐标而所有坐标都是相对于世界原点的这个b-a是一个坐标我们把它命名为向量c而这个向量c是这样的它是从原点出发的并且与我们理想的b-a等大同向。想要达到理想的b-a我们要加上向量a 的位置。那这个向量到底是个坐标还是一个有向线段捏这个只是不同的理解角度。我们可以从一些练习中去理解和掌握它。我们可以思考下怎么进行一个向量的旋转这是要改变坐标的。把一个向量乘以四元数并加上该向量的原初位置即可。从这点来看面对向量的位置角度改变还是不要过多的去想坐标是怎么变化的以空间有向线段的变换理解即可。left Quaternion.Euler(0, angle, 0)*cplyer.position;介绍一波比较OK的方法这些都是vector3 的的方法成员直接求两向量之间的角度 angle向量1向量2输出的是最小角度。限制向量的长度 clampMagnitude向量长度。在某个向量后上来起作用当前面向量的长度小于规定值该向量长度不变当其长度大于规定长度时将该向量长度化为规定值。产生一个投影向量 project向量1向量2。返回一个向量1在向量2 上的投影向量。产生一个反射向量 reflect向量1向量2平面法向量进行助帧移动 moveTowards(起点终点速率)在这里向量理解为坐标比较合适。四元数轴角旋转 将一个无替代四元数即rotationquaternoin.angleaxis角度轴向专攻三维数学在后面的实际开发过程中我们老卡在这个三维数学上。比如一个比较简单的需求我们要摄像机在角色的一个球形面上进行移动。这个真是不好写这需要对三维数学的全面理解与大量的案例练习才能独立解决此类问题。所以我们就又回来了2024年4月14日20:52:01我们从头来全面的广泛的深刻的理解这个牛马的东西向量已知向量在unity中就是表示为一个坐标。我们可以获得她的方向与大小。使用Translate向量可以使物体延该向量的方向移动相依的长度。若要表示从从物体本身出发的一个向量则加上自己的位置。这里着重理解的应该是你写下这个代码能干写什么因为我们常常会把划线和向量想在一起这对方法的解决与思考并不能起到关键性的效果。关于UI项目
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设目标是什么意思外国大气网站

Windows Phone界面控件使用指南与示例 1. 控件概述 在开发Windows Phone应用时,我们会用到各种功能强大的界面控件。这些控件能帮助开发者快速搭建出美观、易用的用户界面。下面将详细介绍一些常用控件的特点和使用方法。 2. WrapPanel控件 WrapPanel控件是StackPanel的增…

张小明 2026/1/9 21:37:59 网站建设

青岛网站制作价格百度云盘做网站空间

PyTorch-CUDA-v2.6 镜像与 Tableau 可视化的协同实践:基于 Flask API 的工程化集成 在现代 AI 工程实践中,一个常见的挑战是:如何将运行在 GPU 容器中的深度学习模型输出,高效、安全地对接到企业级 BI 系统?尤其是在使…

张小明 2026/1/10 20:32:23 网站建设

建设什么网站好笑话网站php程序

还在为黑苹果复杂的配置流程而烦恼吗?Hackintool作为黑苹果社区的多功能工具,集成了从硬件检测到驱动配置的全方位功能。这款开源工具能够帮助你快速识别系统硬件、生成补丁文件、优化USB端口,让黑苹果配置变得简单高效。 【免费下载链接】Ha…

张小明 2026/1/9 17:05:00 网站建设

行业类网站模板用百度地图 做gis网站

快速导出网易云音乐数据的完整指南:开源工具让数据备份如此简单 【免费下载链接】InfoSpider INFO-SPIDER 是一个集众多数据源于一身的爬虫工具箱🧰,旨在安全快捷的帮助用户拿回自己的数据,工具代码开源,流程透明。支持…

张小明 2026/1/8 0:10:26 网站建设

加强纪检监察网站建设网络推广培训学院

大数据领域中Power BI与其他工具的对比分析关键词:大数据、Power BI、对比分析、数据可视化、数据分析工具摘要:本文聚焦于大数据领域,对Power BI与其他常见数据分析和可视化工具进行全面的对比分析。通过深入探讨各工具的核心概念、算法原理…

张小明 2026/1/6 0:29:04 网站建设

网站众筹该怎么做新网站建设流程

计算机毕设java的软件推荐平台cgtq89 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网的飞速发展,软件行业迎来了前所未有的繁荣。用户在面对海量软件时&am…

张小明 2026/1/7 6:48:02 网站建设