unitiy 自定义Attribute及反射的简单应用

那些年我踩的坑(1)——Unity编辑器SerializedProperty.enumValueIndex 这个是我自己的坑,自己挖的坑,然后自己跳了下去 首先上结论,以后别再犯同样的错误: SerializedProperty.enumValueIndex得到的是当前枚举值在所有值中的排序索引,不是枚举值!!!是enumValueIndex,是Index!!!不是enumValue! 错误的写法: public enum EventType { None = 0, Test = 2, Attack = 1, Test3 = 3, Damage = 4, } [Syst 阅读详情

效果图:

没添加Attribute效果图:

添加Attribute效果图


public class Test:MonoBehaviour{
    [MyTest(name = "枚举")]//这里可以用MyTest也可以用MyTestAttribute
    public Properties pp = Properties.HP;
    [MyTest(name = "整数")]
    public int a;
    [MyTest(name = "字符串")]
    public string c;//这里赋值了name,则使用赋的值:字符串
    [MyTest]//这里没有赋值name,则使用字段的名字:d
    public bool d;
    [MyTest(name = "颜色")]
    public Color color;

    public void Update(){
        if(Input.GetMouseButtonDown(0)){
            Debug.Log(pp.ToString() + "   " + GetDes(pp));
        }
    }
    //反射获取desc
    public static string GetDes(Properties p){
        Type type = p.GetType();
        FieldInfo[] fields = type.GetFields();
        foreach(FieldInfo f in fields){
            if(f.Name.Equals(p.ToString())){
                object[] objs = f.GetCustomAttributes(typeof(PropertiesDesc),true);
                if(objs != null && objs.Length > 0){
                    return ((PropertiesDesc)objs[0]).Desc;
                }
            }
        }
        return p.ToString();
    }
 }

public Enum Properties{
    [PropertiesDesc(Desc = "血量")]
    HP,
    [PropertiesDesc(Desc = "蓝量")
    MP,
    [PropertiesDesc(Desc = "防御")]
    Def,
    [PropertiesDesc(Desc = "速度")]
    Speed,
    [PropertiesDesc(Desc = "伤害")]
    Damage,
}

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Enum)]
public class PropertiesDesc : Attribute{
    public string Desc{get;set;}
}

public class MyTestAttribute : PropertyAttribute{
    public string name{get;set;}
}

[CustomPropertyDrawer(typeof(MyTestAttribute))]
public class MyTestDrawer : PropertyDrawer{
    public override void OnGUI(Rect position,SerializedProperty property,GUIContent label){
        MyTestAttribute range = attribute as MyTestAttribute;
        //如果Attribute赋值了name,则使用赋值的值,如果没有赋值,则使用字段的名字  
        string otherName = "";
        if(string.IsNullOrEmpty(range.name)){
            otherName = label.text;
        }else {
            otherName = range.name;
        }

        if(property.propertyType == SerializedPropertyType.Integer){
            EditorGUI.IntSlider(position,property,0,10,otherName);
        }else if(property.propertyType == SerializedPropertyType.Float){
            EditorGUI.Slider(position,property,0,10,otherName);
        }else if(property.propertyType == SerializedPropertyType.Enum){
            string strList = new string[property.enumNames.Length];
            for(int i=0;i<strList.Length;i++){
                strList[i] = Test.GetDes((Properties)i);
            }
            property.enumValueIndex = EditorGUI.Popup(position,otherName,property.enumValueIndex,strList);
        }else if(property.propertyType == SerializedPropertyType.Boolean){
            property.boolValue = EditorGUI.Toggle(position,otherName,property.boolValue);
        }else if(property.propertyType == SerializedPropertyType.String){
            property.stringValue = EditorGUI.TextField(position,otherName,property.stringValue);                            
        }else if(property.propertyType == SerializedPropertyType.Color){
            property.colorValue = EditorGUI.ColorField(position,otherName,property.colorValue);
        }
    }
}

第一次自定义Attribute,如果错误,请提出,会尽快修改。

定义的只是自己需要的,如果不满足你的工程,可以自己拓展。


uinty3d中文入门教程 中文入门书籍bject id="UnityObject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394" width="600" height="450" codebase="http://webplayer.unity3d.com/download_webplayer/UnityWebPlayer.cab#version=2,0,0,0"> <param name="src" value="MyDataFile.unity3d" /> <param name="disableContextMenu" value="true" /> <embed id="UnityEmbed" src="MyDataFile.unity3d" width="600" height="450" type="application/vnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" disableContextMenu="true" /> 立即下载

相关推荐

Uinty3d 一个简单的扫雷(未完成版)

插旗和左右键同时点击 这2个功能还没有做.....不过核心算法 已有。unity3d的资源包,安装要unity3d(3.5以上版本) 新建一个工程,就可以用了

Unity安装图文步骤

Unity安装教程

YeYaLing123的博客 4万+

HDLbits找茬实战:5个Verilog仿真Bug修复案例,新手避坑指南

本文通过HDLbits平台上的5个典型Verilog仿真Bug案例,详细解析了多路选择器位宽不匹配、模块实例化端口映射错误等常见问题,提供实用的修复方案和调试技巧,帮助Verilog新手快速掌握代码验证与仿真技能,避免常见陷阱。

weixin_42653691的博客 162

Unity 官方教程2

fps模板小游戏 3D 官方文档 Creator Kit: FPS - Unity Learn 对象分组和相对世界坐标 建立空的游戏对象对对象进行分组 相对坐标 : 子对象相对于父对象中心点的坐标 世界原点: 相对于世界中心的坐标 子对象使用世界坐标,将父对象的坐标设置为(0,0,0) 创建对象 创建场景: 在顶部菜单栏中,选择 FPSKIT > Create new Scene。 注意: FPSKIT 菜单并非是 unity 中的默认菜单,而是通过代码,新增如 Unit

weixin_64530719的博客 1499

Rancher操作手册(v2.7.5-rc1)

选择需要创建ingress的命名空间 ==》填写ingress名称 ==》在“规则”一栏,选择“Prefix” ==》输入访问路径 ==》选择访问路径对应的service ==》如果需要继续添加访问路径,点击“添加路径”,重复前面的步骤即可。选择需要创建Deployment的命名空间 ==》填写Deployment名称 ==》选择通用 ==》填写容器名称 ==》填写镜像 ==》选择镜像的拉取密文 ==》点击添加端口或Service。点击左侧菜单栏的集群里的“项目/命名空间”,点击右下角的“创建命名空间”。

weixin_60197334的博客 5568

数据结构——滑动窗口

入:下标为 i 的元素进入窗口,更新相关统计量。如果 i < k−1 则重复第一步更新:更新答案。一般是更新最大值 / 最小值出:下标为 i−k+1 的元素离开窗口,更新相关统计量✔1. 定长子串中元音的最大数目✔2. 找到一个数字的 K 美丽值✔4. 子数组的最大平均数 |方法一:前缀和方法二:滑动窗口7. 得到 K 个黑块的最少涂色次数8. 爱生气的书店老板9. 几乎唯一子数组的最大和10. 长度为 K 子数组中的最大和11. 可获得的最大点数12. 最少交换次数来组合所有的1 ||

qq_68915288的博客 762

关于Unity的粒子系统的内容功能梳理

自定义数据。

2401_83430690的博客 2044

uniapp+openlayers集成天地图实战:renderjs通信陷阱与性能优化避坑指南

本文深入探讨了uniapp与openlayers集成天地图时的renderjs通信陷阱与性能优化策略。通过实战案例解析了renderjs的特殊通信机制、地图实例生命周期管理、图层懒加载等关键技巧,帮助开发者避免常见坑点,提升应用流畅度。特别针对多语言切换、热重载偏移等疑难问题提供了解决方案,是uniapp+openlayers开发者的实用避坑指南。

weixin_30872157的博客 362

独立游戏笔记-003

2 创建场景,创建主人公人物,添加操作与动画,创建怪物,装饰,互动,将一些需要的做成预制件。最近学习了一些unitiy做游戏的整体步骤,画下思维导图来总结下游戏中涉及到制作游戏的相关技术与资源。1 做游戏首先需要有资源,比如图片,动图,声音,特效之类的,主要是图形资源和声音资源。3 将对应的图片资源转化成精灵(游戏中的一种对象),然后用瓦片地图构建游戏地图和场景。4 将所有的预制件,按照游戏剧情进行拼接,增加互动,声音,以及粒子特效。

我思故我在 762

IBIS模型中的Pullup和Pulldown曲线详解:如何避免信号完整性设计中的常见错误

本文深入解析IBIS模型中Pullup和Pulldown曲线的关键作用,揭示其在信号完整性设计中的黄金法则。通过详细分析曲线特性、常见误区及验证方法,帮助工程师避免设计错误,优化高速PCB设计。文章还展示了曲线数据在动态终端匹配、串扰预测和电源完整性分析中的高级应用,提升设计效率和可靠性。

weixin_30275415的博客 450

RT-DETR 模型剪枝优化:结构化剪枝对 R18/R50 性能的影响

本文提出分层结构化剪枝策略R18:参数量减少 42%(28M→16.2M),推理速度提升 35%(15→20.3 FPS@Jetson Nano),mAP@0.5 仅降 1.2%;R50:参数量减少 55%(170M→76.5M),推理速度提升 48%(42→62.2 FPS@T4),mAP@0.5 仅降 2.1%。核心价值:为 RT-DETR 提供“精度-效率-部署”平衡的轻量化方案,推动其在边缘设备、工业质检等场景的大规模落地。部署建议。

走向CTO的路上... 464

Unity3D 开发教程:从入门到精通

Unity3D 是一款由 Unity Technologies 开发的跨平台游戏引擎,支持 2D 和 3D 游戏开发。它提供了强大的图形渲染、物理模拟、动画系统等功能,使开发者能够快速创建高质量的游戏。场景视图:用于编辑场景中的对象。游戏视图:用于预览游戏运行时的效果。层级面板:显示当前场景中的所有游戏对象。检查器面板:用于查看和编辑选中对象的属性。通过本教程,你已经掌握了 Unity3D 的基本使用和开发流程。未来可以深入学习 Unity 的高级功能,如网络编程、虚拟现实开发等。

孤客科技 7295

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1632

unity基础(1)——unity编辑器的基本介绍

Unity编辑器的基本介绍 Unity编辑器界面 在基本的编辑器界面有五个关键区域。 Scene view(场景视图)和Game view(游戏视图) 场景视图:与自己创建的世界进行交互的窗口。可以在场景视图中操控对象并从各个角度查看。 游戏视图:使用游戏视图进行游戏测试(需要点击Toolbar中间的Play按钮)。还可以调整游戏画面的长宽比(默认是Free Aspect)和缩放程度(Scale)。 Hierarchy window(层级窗口) 场景视图中的所有对象(叫做GameObject)都会出现在层

m0_37710023的博客 6516

UG\NX二次开发 获取三平面交点

//如果返回值不为0 则此三个面没交点 int three_faces_point(tag_t tagFace1, tag_t tagFace2, tag_t tagFace3, double *dou_x, double *dou_y, double *dou_z)

王牌飞行员_里海的博客 674

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Unity 动画曲线(Animation Curves):创造流畅动画的关键

在Unity中,动画曲线(Animation Curves)是一种强大的工具,用于在动画和游戏开发中创建平滑且自然的过渡效果。通过动画曲线,开发者可以轻松地控制动画参数随时间的变化,实现复杂的动画效果。本文将探讨Unity中动画曲线的基本概念、如何使用它们以及一些实用的技巧。

Unity打怪升级 2659

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

unity学习进阶之美

游戏程序员学习之路 https://miloyip.github.io/game-programmer/game-programmer-zh-cn.svg 网站推荐 github: 程序猿没听过这个就枉为程序了吧! ShaderToy: Shader着色器学习网站 Coursera :斯坦福大学两位计算机教授创办的在线教育平台 在网上学习全世界知名高校最好的课程 ...

游戏开发、游戏引擎开发、逆向破解爱好者 1120

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【unity3D】unity的基本知识

希望我记录的内容可以帮到刚入门的你💟

zhurouwanzi的博客 1517

【Unity】3D功能开发入门系列(一)

包含开发环境(安装 Unity、创建项目、Unity 窗口布局)、场景与视图(场景、游戏物体、3D 视图、世界坐标系、视野中心、透视与正交)、游戏物体(3D 原生物体、工具选项栏的使用、更多操作)、模型(网格、材质、纹理、外部模型、更多细节、三种 .fbx 文件的使用方式——直接拖拽、材质替换、分解重组)的详细介绍

wanchen_Gabby的博客 9167

【Unity3D】Unity3D学习笔记

C#学习笔记

qq_44951699的博客 4800

Unity3D入门基础知识汇总

创建C#脚本,然后放到物体下面就可以了。

benben044的专栏 1万+

【Unity】Unity C#基础(十二)特性Attribute、反射Reflection

特性 常用特性 自定义特性 更多内容请查看总目录【Unity】Unity学习笔记目录整理

一个普普通通的游戏开发者 4873

【Unity3D入门教程】Unity3D简介、安装和程序发布

Unity3D是一个跨平台的游戏开发引擎,它能够帮助开发者快速构建游戏场景,进行游戏开发与发布。它支持将开发好的作品发布到Windows、Mac OS、Android、iOS、Linux等多种平台。另外,Unity3D官方版本目前可以运行在Windows和Mac OS上,当然还有可以运行在Linux上的非官方版本。

雁回晴空的博客专栏 5万+

开源规则引擎比较_Lively Wallpaper - 免费开源的动态壁纸桌面软件 (Wallpaper Engine 替代品)...

说到动态壁纸 / 视频动画桌面,大家可能都会听过 Wallpaper Engine 这款神器!它可以说是动态桌面软件中的王者,素材资源最为丰富,唯一可惜的是它是一款付费软件。如果你不想花钱,又希望体验下动态桌面的华丽效果,那么开源免费的 Lively Wallpaper 则是不错的替代品。你除了下载网上他人制作的大量动态壁纸外,也能将自己的高清视频、GIF 动图、Unity 程序或 HTML 动画...

weixin_39620629的博客 3233

Unity不再仅仅是游戏引擎

近匠方太UnityDavid Helgason游戏引擎游戏开发工具(发表于2014-01-27) 摘要:《近匠》第8期:Unity已经支持近20个平台,通过成功推出Asset Store和即将发布的Unity Cloud,他们希望,当人们听到Unity时,它将不再仅仅一款游戏引擎,更是一个能帮助用户快速开发、推广盈利的平台。   优快云:请谈一谈您的个人经历吧。 David Helg

paopaohuiiz的专栏 1364

Unity开发之-Unity入门简介(近万字攻略)

前言 大家好,我是一个Unity的程序员,从这篇开始我会持续更新学习Unity的基本,去帮助想要学习unity的小伙伴,有兴趣的同学可以跟着我一起学习Unity,下面,我们将要开始了解Unity以及想要制作一款游戏需要具备的知识。 文章目录前言unity的学习路线 unity的学习路线 ...

想吃烤地瓜的博客 6万+
上一篇: unity 打开对话框进行打开文件和保存文件
下一篇: unity 使用Attribute自定义一个HeaderAttribute效果
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值