2025年unity3d 入门[通俗易懂]

unity3d 入门[通俗易懂]unity 关联 vs vscode 直接加载文件夹 不要使用 unity 右键打开项目 unity2019bug 导致 vscode 打开后没有界面 后才占用项目 不能右键打开 找不到 ms vscode csharp 依赖 unity 插件版本太老 可以修改 extension 目录中的 package json 依赖 vscode extensions unity unity debug 2 7 2

unity关联vs


vscode直接加载文件夹,不要使用unity右键打开项目,unity2019bug导致vscode打开后没有界面,后才占用项目,不能右键打开。

找不到ms-vscode.csharp依赖

unity插件版本太老,可以修改extension目录中的package.json依赖

.vscode\extensions\unity.unity-debug-2.7.2

查看c#版本名称


修改package.json

vscode安装vscode-solution-explorer管理项目

unity安装cinemachine

asset store搜索cinemachine插件,import后确认导入后,可以在packages节点(library/packagecache中代码)找到

Cinemachine如果报错(确保没有io错误):
Windows > Package Manager > in project依赖项,删除后,重新安装


unity内部错误,编译不通过,删除assets中自动生成的cinemachine文件夹,重新安装package manager中的包(之前是app store中的生成错误了,不删除不会刷新代码)
菜单栏出现cinemachie才能算成功

IO错误


权限问题,换个文件夹(c盘权限问题)

异常捕获


vscode设置常用的nullReference异常,可以在资源为空的地方停止运行

package

unity运行错误,提示文件asmdef文件找不到
在package中搜索,找到后双击导入

asmdef文件:文件的方式定义程序集,package右键文件夹import(源码在\library\PackageCache下,生成的程序集在\library\ScriptAssemblies下),unity中的adf资源
unity中菜单:Assets > Create > Assembly Definition创建(可以提高编译效率)


name即项目名称,references依赖项

package compile error

选择package下文件夹,右键reimport

导入成功packages文件夹下,可以找到:

设置vscode调试


项目不要通过unity右键的方式打开,可找到文件夹打开
添加日志:Debug.LogError,Unity及时编译,unity > console点击后,出现错误自动暂停

the reference script on this behaviour missing.删除脚本组件后,重新拖动脚本到节点上

组件引用搜索

节点列表里面搜索,t:名称
tag:每个节点可以绑定标签,一个标签对应多个节点。layer(勾选后显示层)
static:静止物体不可以tansform移动,渲染特殊处理

Copying assembly from ‘Temp/Assembly-CSharp.dll’ fail

project栏下packages/textmesh pro,右击reimport

ui穿透

protected virtual bool IsClickUI()
{
if (EventSystem.current!=null)
{
PointerEventData eventData = new PointerEventData(EventSystem.current);
eventData.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
List results = new List();
EventSystem.current.RaycastAll(eventData, results);
return results.Count > 0;
}
return false;
}

unity插件编辑模型

三大神器ProBuilder、Polybrush、ProGrids

对象查找

UnityEngine.Object.FindObjectsOfType搜索节点

GameObject.Find通过名字查找

GameObject.GetComponent查找同一对象的组件

Resources.Load资源加载(assets\resources目录中,相对路径)

Resources.GetBuiltinResource内部资源加载

AssetBundle.Load加载Assetbundle资源

render对象有layer属性,设置显示层级和节点的层级不同

动画

骨骼动画、关节动画、关键帧动画

Animation:关键帧设置,可以设置对象的所有组件动画

Animator:由Animation组成,不同的状态包含不同的Animation(animation编辑器在节点中打开才能编辑,场景中可以预览)

动画之间通过transition转换(转换控制时间轴),通过参数判断状态转换

TimeLine:时间轴,多元素

元素

节点,Gameobject,使用transform属性可以设置子节点

TileMap绘制图层,通过tile palette绘制

prefab对象集(gameobject嵌套),prefab可以点击去单独编辑的集合,gameobject拖到文件夹中自动生成预制件

参考:https://www.jianshu.com/p/283752d80737

Assetbundle压缩打包资源,支持热更新

cs脚本,脚本pulic成员unity editor component可见

GUI,通过unity的Ongui事件函数

UGUI,canvas元素上拖放的gui

UWidget,unity插件封装了flutter高效的app开发模式

unity界面OnGUI、NGUI下载插件、UGUI 自带

assembly definition

打包脚本到dll,减少代码修改后的项目编译时间

资源

resource,

asset(AssetDatabase.LoadAllAssetsAtPath展开文件的所有object,AssetDatabase.LoadAssetAtPath打开特定对象)

assetbundle,edit中管理asset资源

参考:https://blog.csdn.net/u014230923/article/details/51433455
https://www.jianshu.com/p/2e5b1b14c276

组件事件函数

加载第一个场景
Awake

第一帧更新之前
Start

插值帧
OnApplicationPause

更新顺序
FixedUpdate、Update、LateUpdate游戏交互、动画和相机位置等操作

渲染
OnRenderObject、OnPreCull、OnBecameVisible

协同程序
yield

对象 (Object) 被销毁时
OnDestroy

参考:file:///D:/Program%20Files/Unity3d/2018.4.13f1/Editor/Data/Documentation/en/ScriptReference/MonoBehaviour.html

协程设计

unity中为了增加稳定性,使用协程实现异步(应用层级别的线程控制)
StartCoroutine、StopCoroutine(以函数名开启的协程)、StopAllCoroutines
协程需要主动关闭
yield return相当于阻塞等待,yield break终止协程(内部退出)

协程的调用和帧率相关

射线检测

Physics.Raycast

插件

Editor,MenuItem等属性设置插件的显示方式
Script/Editor目录下的文件,自动添加到插件项目中

ab打包,resource目录是默认的ab包,inspector中new assetbundle,相同的名称在同一个包中

[MenuItem("Assets/Build AssetBundles")]
static void BuildAllAssetBundles()
{
string assetBundleDirectory = "Assets/AssetBundles";
if (!Directory.Exists(assetBundleDirectory)) Directory.CreateDirectory(assetBundleDirectory);
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}

fbx

3d模型fbx,包含动画,在unity中分解为animation、resource、material、texture绑定到gameobject中使用

GUI

RectTransform组件:
锚点(透明三角):四个三角符号到窗口四个角距离固定,三角符号可以在一个点上
轴点(空心小圆圈):旋转的中心
strech模式下长宽高无法获取,

gui顶点创建的ui、guilayout自动创建
button事件绑定:添加EventTrigger组件、射线检测、button绑定button对象和函数

排版,多个控件选中后设置大小,和整体大小拖动可以控制间距
Gizmos:选中效果设置可扩展,相机选中效果显示区域
相机叠加:相机的depth only模式和don’t clear模式配置depth顺序配置渲染先后顺序,depth小的先渲染

脚本OnGUI只能创建,操作在Update中进行

打包

UnityEditor不能在打包项目中使用,否则无法打包
Unity中使用System.IO中的DirectoryInfo打包会找不到路径

android目录

application.datapath unity的资源目录,权限导致写入数据容易失败
temporaryCachePath 系统临时缓存目录

unity3d播放卡死

vs tool>setting>实时>全部勾选
或者建议使用vscode

场景间传递数据

SceneManager.LoadScene //场景名称或者build setting中的编号

start函数中GameObject.DontDestroyOnLoad(gameObject); //设置场景切换不销毁的对象

PlayerPrefs.SetFloat、getfloat保存数据

静态成员变量

目录结构

特殊目录:Eidtor\Resource

参考:https://blog.csdn.net/u013628121/article/details/53377372
编程小号
上一篇 2025-09-01 21:33
下一篇 2025-07-21 17:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/110707.html