Unity功能
Unity功能
Cuijiahao
cocos2d-x/u3d程序员
展开
-
VsCode使用EmmyLua插件调试Unity工程Lua代码
一、VSCode安装EmmyLua二、添加配置文件三、设置配置文件四、添加Lua断点调试入口五、运行unity测试断点原创 2022-08-11 11:56:32 · 3191 阅读 · 0 评论 -
Unity 绘制弹球和台球的运动轨迹
台球、弹球的轨迹方案原创 2022-06-29 11:39:23 · 2726 阅读 · 1 评论 -
Unity 区域内生成多个不穿透的物体
红色区域内生成多个互相不穿透的物体1、四周的边界需创建大尺寸的Collider防止穿透并且Rigidbody2d需进行如下设置,设置Constraints锁定固定物体的位置和旋转角度,防止被生成的物体挤出2、设置要生成的物体的Collider和Rigidbody2d,这里我锁定了旋转3、代码如下:using System;using System.Collections;using System.Collections.Generic;using System.Lin原创 2022-04-14 15:30:36 · 2895 阅读 · 0 评论 -
Unity 使用tiledmap解析地图
1、先使用tiledmap编辑地图,图层用来刷图块,对象用来定义单个格子的数据2、为每个图块调属性3、图块需要单独配置属性的就必须创建对象,并设置值右键设置属性4、导出json文件5、代码如下,详细看相应注释using SimpleJSON;using System.Collections;using System.Collections.Generic;using UnityEngine;public class tmx : Mono...原创 2022-04-08 16:28:59 · 4200 阅读 · 0 评论 -
Unity聊天框功能,背景图片随文字大小而改变
一、创建UI物体新建一个Canvas,然后创建一个 Image,再在 Image 里面添加一个子物体 Text如图场景中效果此时并没有设置任何参数。二、添加组件给 Image 添加两个组件 horizontal layout group,content size fitter注意图中的设置参数,如下图:.这时候,场景中的布局自动就变成了这样三、运行此时还没有写任何的代码,效果已经实现了,运行后,在编辑器中我们改变 Text 的文本的内容,可以看到,场景原创 2022-04-08 14:52:05 · 4249 阅读 · 0 评论 -
Unity 按钮点击缩放
将下面的代码拖到Button上即可using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;public class ButtonHandler : MonoBehaviour, IPointerDownHandler, IPointerUpHandler{ public void OnPointerDown(PointerE.原创 2022-03-22 10:55:08 · 6490 阅读 · 0 评论 -
Unity Spine切换动画
Unity使用Spine切换动画时会自动加入融合,这时动画会产生过渡的效果,如果想直接切换则按下图操作即可把Default Mix Duration设置为0public void Awake() { skeletonAnimation = transform.Find("SkeletonAnimation").GetComponent<SkeletonAnimation>(); var animationState = skelet.原创 2022-03-21 18:20:48 · 4433 阅读 · 0 评论 -
Unity 降低粒子占用的Batches
优化前优化后优化过程这个特效由两个粒子特效组成,把每个粒子特效的OrderInLayer重新设置确保不要重复,见下图:原创 2022-03-16 16:12:44 · 3131 阅读 · 2 评论 -
Unity 让图片颜色发光发亮
Color color = GetComponent<SpriteRenderer>().material.color;//记录原颜色Sequence quence_material = DOTween.Sequence();quence_material.Append(GetComponent<SpriteRenderer>().material.DOColor(color * 1.1f, 0.1f));//让颜色乘一个系数quence_material.Append(Ge.原创 2022-03-09 14:33:56 · 3697 阅读 · 0 评论 -
Unity Vector3.Reflect反射线使用和计算原理(光打到平面上反射)
计算向量投射到物体上的反射向量碰撞模拟:public class test3 : MonoBehaviour{ Vector3 dir; Vector3 pos; private void Start() { dir = transform.right; pos = transform.position; } private void Update() { transform.posi...原创 2022-02-10 14:41:47 · 3693 阅读 · 0 评论 -
Unity 获取Sprite的宽和高
float bound_x = go.GetComponent<SpriteRenderer>().bounds.size.x;float bound_y = go.GetComponent<SpriteRenderer>().bounds.size.y;原创 2022-02-11 14:21:05 · 4434 阅读 · 0 评论 -
Unity 将世界坐标转UI坐标
unity的物体是在世界坐标里的,如果让UI里的物体对准世界里的物体需要一系列的转换。private void ShowTowerUpgrade(TowerCtrl ctrl){ towerCtrl = ctrl;//3D世界里的物体 transform.localPosition = WorldPointToUILocalPoint(ctrl.transform.position);} private Vector3 WorldPointToUILoca原创 2022-01-05 14:07:17 · 5392 阅读 · 0 评论 -
Unity 使用BmFont制作艺术字体
BMFont制字工具 和 Unity转换字体工程(BMFontForUnity)下载地址:BMFontForUnity制作艺术字体-Unity3D文档类资源-CSDN下载1、制作艺术字先准备0-9的数字图片BMFont安装好之后,打开位图字体制作工具,长这样的:打开之后长这样的:再单击 Image -> Import image,把你要做成位图字体的图片依次导入进来。注意下这个:这个Id填的是你导入数字的ASCII,我导入的是 数字 “0...原创 2021-12-31 11:46:39 · 1619 阅读 · 0 评论 -
Unity 如何获得 360 度 Vector3.Angle?
using UnityEngine;public class test1 : MonoBehaviour{ public Transform target; void Start() { //从左边开始算角度 Debug.Log("角度:" + CalculateAngle(transform.position, target.position)); } public float CalculateAngle(Vec.原创 2021-12-30 19:07:48 · 2164 阅读 · 0 评论 -
Unity fsm有限状态机的实现
FSMusing UnityEngine;public class FSM<T>{ private T owner; public IFSMState<T> CurrentState { get; private set; } public IFSMState<T> PreviousState { get; private set; } public FSM(T owner) { this.owner原创 2021-12-21 10:32:28 · 2280 阅读 · 0 评论 -
Unity 鼠标拖动UI图标生成场景内的物体并随鼠标移动
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;//拖塔建塔public class UI_HeroItemCtrl : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler{ GameObject tower; TowerCtrl tow.原创 2021-12-18 13:40:18 · 1083 阅读 · 0 评论 -
Unity 使用SpriteRenderer和TextMeshPro制作血条
在UGUI模式下可以用Image的填充来制作血条,但是Image和Text放在一起会增加渲染批次,所以想了一个办法是在场景里用Sprite和3dTextMeshPro来制作血条,这样可以减少渲染批次,具体方法如下1、场景里创建一个血条的底板2、创建血条,DrawMode设置为Sliced3、血条的图片设置为左对齐4、创建3dTextMeshPro5、导入一个ttf字体,创建TextMeshPro字体6、将刚才创建的字体拖到fontasset下...原创 2021-12-18 13:31:00 · 2685 阅读 · 0 评论 -
Unity动画系统Animator动态添加事件
using UnityEngine;public class Test : MonoBehaviour{ #region --变量定义 private Animator animator; private AnimationClip[] clips; #endregion #region --系统函数 private void Start() { animator = this.GetComponent<Animator.原创 2021-09-27 11:18:40 · 1110 阅读 · 0 评论 -
UGUI 判断点击在UI上还是屏幕中
private void Update() { if (Input.GetMouseButtonDown(0)) {#if !UNITY_EDITOR//手机模式 if (!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))#else//编辑器模式 if (!EventSystem.current.IsPointerOv.原创 2021-09-27 10:11:29 · 193 阅读 · 0 评论 -
UGUI功能 Input.mousePosition点击生成图片在点击位置上
private void Update() { if (Input.GetMouseButtonDown(0)) { if (!LevelManager.instance.isClickItem) { //Debug.Log(Input.mousePosition); var go = Instantiate(m_error);//生成图片 ...原创 2021-09-26 17:54:04 · 300 阅读 · 0 评论 -
Unity AssetBundle使用(支持安卓手机)
1、打包打图集打预制体打图片打AB包所有打出来的包都存到Assets/StreamingAssets 目录下using UnityEditor;public class CreateAssetBundles{ [MenuItem("Assets/Build AssetBundles")] static void BuildAllAssetBundles() { BuildPipeline.BuildAssetBund...原创 2021-09-14 19:19:04 · 1201 阅读 · 0 评论 -
Unity功能 扣血 贝塞尔曲线
using System.Collections;using System.Collections.Generic;using UnityEngine;using DG.Tweening;using UnityEngine.UI;public class TextHp : MonoBehaviour{ private float _times = 0.5F; private float _pointCount = 5F; private float _distance.原创 2021-07-23 17:02:04 · 295 阅读 · 3 评论 -
Unity鼠标控制物体的旋转、移动、缩放等
Input.GetMouseButton(0) 获取鼠标输入,参数为一个int值 为0的时候获取的是左键 Input.GetMouseButton(1) 为1的时候获取的是右键 Input.GetMouseButton(2) 为2的时候获取的是中键(就是那个滑轮) Input.GetMouseButton 鼠标点击 Input.GetMouseButtonUp 鼠标松开 Input.GetMouseButtonDown 鼠标按压 Camera.main.ScreenToWorl..原创 2021-07-15 14:30:09 · 4158 阅读 · 1 评论 -
Unity和Android互调
Android调用UnityAndroid端:UnityPlayer.UnitySendMessage("UAndAManager","Json_AcToken",a_t_r);//类名,函数名,参数Unity端:public class UAndAManager : MonoBehaviour{ public void Json_AcToken(string str) {}}Unity调用AndroidUnity端using (AndroidJ...原创 2021-06-15 11:24:40 · 314 阅读 · 1 评论 -
Unity 屏幕适配之正交摄像机(Orthographic Camera)下游戏区域适配
导语: 我们在进行游戏开发的时候为了让我们游戏在可以在各种机型上正常显示, 需要根据屏幕分辨率来调整游戏区域。 起初我只是简单的对游戏进行放大缩小和图片填充,但是这种方法在异形屏上虽然可以做到简单的适配,但是游戏内对象位置计算的难度会增加,产生逻辑混乱。 通过查资料和推理找到了一种更好的方式,就是改变摄像机(camera)的orthographic size,来进行适配。1.创建一个Camera(摄像机),将Camera的Projection设置为orthographic2.将Si原创 2021-06-01 10:24:07 · 1566 阅读 · 3 评论 -
Unity 用代码设置UGUI的渲染层级
用代码设置UGUI渲染无非和三个API有关:1.SetAsFirstSibling();2.SetAsLastSibling();3.SetSiblingIndex(n)SetAsFirstSibling()是设置为最先渲染的,即会被后渲染的挡住。SetAsLastSibling();是设置为最后渲染的,即会挡住比他先渲染的SetSiblingIndex(n)是设置层级,从0开始到childcount -1当n为0时,其效果与SetAsFirstSibling();相..原创 2021-04-06 15:05:22 · 1285 阅读 · 0 评论 -
Unity 2D游戏:Physics Material 2D(2D物理材质)
创建:方法一:菜单栏 Assets ---> Create --->Physics Material 2D方法二:在Project视图右击 ---> Create --->Physics Material 2DFriction:摩擦力Bounciness:弹力原创 2021-03-15 20:07:34 · 1649 阅读 · 0 评论 -
Unity功能 ui数字从3D世界一个点移动到另一个点 , 世界坐标转换UI坐标
void AddGold(Vector3 pos)//pos是起始的世界坐标位置{ GameObject go = Instantiate(m_AddGold.gameObject, transform);//创建UI数字 go.name = "_AddGold"; go.SetActive(true); go.GetComponent<Text>().text = string.Format("+{0}", 200); //将起始的世界坐标位置转换为.原创 2021-03-12 20:16:55 · 314 阅读 · 0 评论 -
Unity功能 UI固定在3D模型上面,血条功能
void LateUpdate(){ if (tableCtrl != null) { // 移动时锁定位置 var screenPoint = RTCamera.CameraDict[RTCameraType.Exhibition].Camera.WorldToScreenPoint(tableCtrl.transform.TransformPoint(Vector3.down * 0.8f)); if (RectTransform...原创 2021-02-22 15:16:12 · 968 阅读 · 0 评论 -
Unity URP中使用UI相机
public class RTCamera : MonoBehaviour{ public RTCameraType CameraType; [HideInInspector] public Camera Camera; private void Awake() { Camera = GetComponent<Camera>(); // UI相机叠加到当前相机之上 Camer.原创 2021-02-14 15:27:51 · 1001 阅读 · 0 评论 -
Unity功能 3D世界坐标转2D屏幕坐标,UI条贴在3D物体上面
让2D UI跟随3D物体移动或指示3D物体的位置该怎么做呢?将代码绑定到UI上代码:using UnityEngine;/// <summary>/// 3D物体转2D屏幕坐标/// </summary>public class Position3DTo2D : MonoBehaviour { public Transform target; // 3D目标 public Transform ui; // 2D UI原创 2021-01-23 19:39:49 · 1151 阅读 · 0 评论 -
Unity功能 获取Animator动画的时间
IEnumerator InvincibleJMJCor(){ tsSawTableSlot.GetComponent<Animator>().SetTrigger("JMJ_GO"); yield return new WaitForSeconds(0.1f);//稍微延迟一会再读取动画时间 var sawAnimState = tsSawTableSlot.GetComponent<Animator>().GetCurrentAnimatorState.原创 2021-01-18 14:59:06 · 3635 阅读 · 0 评论 -
Unity 动态更换模型纹理
string bg = "";switch (pBooth.level){ case 1: bg = "T_SelectStone_BG_First"; break; case 2: bg = "T_SelectStone_BG_Middle"; break; case 3: bg = "T_SelectStone_BG_High"; break;}string path ...原创 2020-12-16 11:16:43 · 1229 阅读 · 0 评论 -
Unity Quaternion.FromToRotation 将物体从 fromDirection 旋转到 toDirection
Quaternion.FromToRotationpublic staticQuaternionFromToRotation(Vector3fromDirection,Vector3toDirection);描述创建一个从fromDirection旋转到toDirection的旋转。通常情况下,您使用该方法对变换进行旋转,使其的一个轴(例如 Y 轴)跟随世界空间中的目标方向 /toDirection/。using UnityEngine;public class...原创 2020-12-09 13:28:40 · 4525 阅读 · 0 评论 -
unity Animator “apply root motion“
勾掉apply root motion,对象的Transfrom变动会基于动画移动,不受脚本控制。勾上apply root motion,则Transform受到脚本控制。原创 2020-11-29 14:28:34 · 1052 阅读 · 0 评论 -
Unity UGUI 利用EventTrigger实现按钮事件注册
Hierarchy面板如下图所示:UIEvent代码:using System;using UnityEngine;using UnityEngine.EventSystems; public class UIEvent : EventTrigger{ public static UIEvent Get(GameObject obj) { UIEvent e = obj.GetComponent<UIEvent>(); if原创 2020-11-28 19:40:58 · 408 阅读 · 0 评论 -
Unity功能 将视图滚动条自动移动到最高关卡处
void InitMap() { float height = 0; var list = TableManager.Instance.GetPStageData(); for (int i = 0; i < list.Count; i++) { var slotName = string.Format("Slots/Slot_{0}", i + 1...原创 2020-11-23 15:39:19 · 632 阅读 · 1 评论 -
unity 使用LeanTouch拖动cube移动 2d屏幕坐标转3d世界坐标
1.在unity自带的asset store搜索 Lean touch ,然后找到对应的资源,然后全部都导入到项目中。2.点击菜单栏GameObject->Lean->Touch。3.将下面的代码拖到想移动的cube上using System.Collections;using System.Collections.Generic;using UnityEngine;using Lean.Touch;using System;public class DragCube原创 2020-11-07 14:58:16 · 759 阅读 · 0 评论 -
unity 拖动cube 2D屏幕坐标转3D世界坐标
using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class MouseDrag : MonoBehaviour { public Transform tfOriginPanel; public Transform tfColliderParent; public Text txtHor.原创 2020-11-06 19:52:21 · 366 阅读 · 0 评论 -
Unity研究 粒子在Scene上显示,但在Game视图不显示的问题
如果你确认的Scene视图没有问题,试着检查一下物体的Layer 与 camera的Culling mask是否一致,或者说camera的Culling mask中是否包含物体的layer这是相机的渲染层次,只有将物体的Layer选成这个层次才能被相机渲染出来...原创 2020-10-26 19:09:06 · 6404 阅读 · 0 评论