精华内容
下载资源
问答
  • Unity3D项目游戏(2D打鱼),一个小游戏,基于Unity3D,2D小游戏
  • 采用Unity3D游戏引擎制作的功能项目及游戏,较适用于Unity初学者。当然也有部分大项目,会自动替换至单独库进行查看。 阅览方法: 极大部分项目内都有项目文档,项目文档内都囊括设计思路,代码结构,技术要点,注意...
  • 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音。那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使用U3D 5.3.X之后版本已经集成的单元...
  • 用C#语言,Unity3d引擎开发的平台类游戏案例,包含项目资源和源代码,有注释。供初学者学习,高手请路过。
  • unity3D赛车游戏项目源代码,分赛车和越野警车两种,仿真实赛车设计,很有身临其境的感觉,包含换挡系统和汽车碰撞,c#脚本。
  • Unity3D项目游戏(3D坦克大战),一个Unity3D的小游戏
  • Unity 3D 游戏开发经典教程-1 Unity 3D 游戏开发经典教程-2 Unity 3D 游戏开发经典教程-3 Unity 3D 游戏开发经典教程-4 分4次上传 38集全。 本资源来源于网络,如有侵权请通知删除
  • 5款Unity3D制作的小游戏实例,新手必备 5款Unity3D制作的小游戏实例,新手必备 5款Unity3D制作的小游戏实例,新手必备 5款Unity3D制作的小游戏实例,新手必备
  • unity3d游戏3dRPG角色扮演完整项目源码分享-附件资源
  • Unity3D网络游戏实战PDF

    2019-07-23 07:23:34
    资源名称:Unity 3D网络游戏实战 PDF内容简介:深入讲解Unity3D网络游戏开发的原理和实现细节,全面剖析游戏网络框架设计。 ·实战性强,以多人坦克对战游戏案例贯穿全书,详述网络游戏的开发过程,帮助读者掌握商业...
  • NGUI写的一个小游戏的设置界面,纯UI界面,有声音等控制界面
  • UNITY3D 动作rpg游戏源码UNITY3D 动作rpg游戏源码UNITY3D 动作rpg游戏源码UNITY3D 动作rpg游戏源码UNITY3D 动作rpg游戏源码
  • unity3D项目代码包括城市智能交通系统的项目代码和赛车游戏项目代码。
  • unity3D外星风格射击游戏完整项目源码 On Rails Shooter Template 0.2 要求Unity 5.5.0 或更高版本。 Create your very own On-Rails Shooter game using the ORS system! The game is ready to release straight ...
  • Unity3D切水果完整项目和代码,压缩包内有教程和源代码,仅供参考使用,请勿商用,如有侵权,请即使联系
  • unity3d游戏3dRPG角色扮演完整项目源码 下载地址: 链接:https://www.unityfly.com/ unity爱心飞扬下载站 ???? 本站建立的初心是:为兄弟姐妹们学习unity免费提供便利和支持 温馨提示: 下载后:直接用unity...

    unity3d游戏3dRPG角色扮演完整项目源码分享
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    免费下载地址:
    链接:https://pan.baidu.com/s/1S1Zb3Eo2ndehUNMTKUMvJw
    提取码:kdbr
    复制这段内容后打开百度网盘手机App,操作更方便哦

    温馨提示:
    下载后:直接用unity打开项目即可:)

    展开全文
  • unity3d跑酷游戏源码

    2018-11-12 21:00:05
    unity3d跑酷类游戏源码,亲测unity4.71版本完美运行。
  • unity3D古风武侠游戏源码 unity3D古风武侠游戏源码(45度视角),一款东方武侠风格游戏demo,3D场景与人物,45度固定视角,360度全方位旋转,鼠标点击移动,c#脚本,中国古典风格游戏源码比较少,这个比较珍贵的。
  • unity3D台球游戏源码 仅供测试 基于Unity开发
  • 文中以室内虚拟3D场景为开发目标,利用Unity3D游戏引擎,结合C#脚本语言开发了室内漫游系统。系统为用户提供了近乎真实的虚拟环境,用户可以自由的漫游、浏览、与环境互动。文中还讨论并实现了在Unity3D 平台上构建...
  • unity3D(2018.3)实现弹开小球游戏游戏运行时,点击鼠标左键,生成绿色小球,并朝红色方块飞来。点击鼠标右键,红色方块跳起。当红色方块与绿色小球相撞时,绿色小球被弹开。
  • 在一个现有的Android项目中嵌入unity3d项目 1.将unity3d项目导出android工程 2.将第一步导出的Android工程中assets文件夹和libs文件夹下的所有内容复制到Android项目中对应的assets和libs文件夹下 3.Android...

    在一个现有的Android项目中嵌入unity3d项目

    1.将unity3d项目导出android工程

     

     

    2.将第一步导出的Android工程中assets文件夹和libs文件夹下的所有内容复制到Android项目中对应的assets和libs文件夹下

    3.Android调转到unity

    package com.jxkj.testandroid;
    
    
    import android.support.v7.app.ActionBarActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    
    public class MainActivity extends ActionBarActivity {
        Button startGameBtn;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            startGameBtn = (Button) findViewById(R.id.StartGameButton);
            startGameBtn.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    GotoGameActivity();
                }
            });
        }
        
        void GotoGameActivity(){
    
            Intent intent = new Intent(this,GameActivity.class);
    
            startActivity(intent);
    
            }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle action bar item clicks here. The action bar will
            // automatically handle clicks on the Home/Up button, so long
            // as you specify a parent activity in AndroidManifest.xml.
            int id = item.getItemId();
            if (id == R.id.action_settings) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }
    MainActivity.java

     

    package com.jxkj.testandroid;
    
    import com.unity3d.player.UnityPlayer;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class GameActivity extends Activity{
        UnityPlayer mUnityPlayer;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mUnityPlayer = new UnityPlayer(this);
            setContentView(mUnityPlayer);
            //setContentView(R.layout.activity_main);
        }
        
        // Resume Unity
        @Override protected void onResume()
        {
            super.onResume();
            mUnityPlayer.resume();
        }
    
        // Notify Unity of the focus change.
        @Override public void onWindowFocusChanged(boolean hasFocus)
        {
            super.onWindowFocusChanged(hasFocus);
            mUnityPlayer.windowFocusChanged(hasFocus);
        }
        
        @Override  
        public void onBackPressed() {  
            runOnUiThread(new Runnable() {  
                @Override  
                public void run() {  
                mUnityPlayer.quit();  
                }  
            });  
            super.onBackPressed();  
        }
    }
    GameActivity.java

     

    转载于:https://www.cnblogs.com/ring1992/p/7827521.html

    展开全文
  • 简单的FPS游戏教程,十分完整,适合初期接触Unity3D的同学学习,并且整理了FPS-Tutorial的素材包,使用更方便
  • Unity3D-----简易游戏项目开发01

    千次阅读 2020-05-23 11:21:03
    城市激斗一、简介1、所需知识点2、游戏需求 一、简介 1、所需知识点 (1)射线检测 (2)Mecanim动画系统 (3)Navigation寻路系统 (4)OGUI (5)欧拉角与四元数、向量 (6)持久化数据 2、游戏需求 (1)、开始...

    一、简介

    1、所需知识点

    (1)射线检测
    (2)Mecanim动画系统
    (3)Navigation寻路系统
    (4)UGUI
    (5)欧拉角与四元数、向量
    (6)持久化数据

    2、游戏需求

    (1)开始界面(人物换装),到游戏场景角色诞生,诞生的角色穿着换装界面存储的服装。

    (2)随机在3个诞生点,一共产生3波怪(每波怪2-3个即可)。

    (3)怪物头顶有血条,随着波数的累加怪物越来越难打(血量多)。

    (4)角色与怪之间动画互动(Mecanim动画系统),如:角色射线打到怪物,角色播放攻击动画,怪播放受到攻击的动画。

    (5)敌人,角色血条效果。

    (6)打敌人,随机产生掉装备,吃到掉的装备可实现例如加血的效果。

    (7)打死3波怪后胜利画面,自己血条值为0时GameOver画面 。

    二、开始界面

    先上图,看看最终完成是什么样的!
    在这里插入图片描述
    在点击不同的按钮有不同的事件响应,按钮功能就不进行说明了。
    按钮功能实现逻辑: 以上按钮可以分为四种按钮,分别是角色选择、服装选择、武器选择、动作预览。
    那么我们就可以按这四种分类将功能进行实现,创建一个空物体,将一个种类的按钮作为此空物体的孩子,编写的脚本就给予空物体,那么给按钮添加事件就需要遍历所有的子物体,然后添加按钮点击事件。而点击按钮需要实现功能,我就拿角色选择按钮来举例,另外三种按钮的脚本可以仿照此逻辑进行编写;
    角色选择按钮功能实现: 在点击按钮后,我需要进行角色物体的创建,那么按钮和预制件之间就需要有响应,那么如何根据我们点击的按钮来创建指定的角色呢?我们可以通过按钮名字与预制件名字来进行联系,将按钮名字设置成为预制件的名字 (按钮名字也可以不和预制件名字相同,但是必须包含预制件名字),那么功能的实现就比较简单了,可以创建字典,key值为按钮名字,value值为gameobject类型,存储角色预制件,那么我们在点击按钮的时候就可以根据按钮名字直接获取预制件进行创建角色物体了。另三种按钮功能请自行类推了~
    温馨提示:代码编写当中的细节问题在代码注释中有说明

    1、开始界面按钮功能代码

    • 角色选择功能
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.UI;
    using UnityEngine.EventSystems;
    
    public class GenerateRole : MonoBehaviour
    {
        public GameObject[] gameRole;
        public Transform vec;
        private Dictionary<string,GameObject> dic;
        public static GameObject Role { get; set; }
        public GenerateRole() { }
        private void Start()
        {
            //初始化字典
            dic = new Dictionary<string, GameObject>();
            //遍历所有的孩子,给按钮添加点击事件
            AddEevent();
        }
        //因按钮和预制件的名字不一样
        //所以需要对name进行切割
        private void GetButtonName()
        {
            var button = EventSystem.current.currentSelectedGameObject;
            CreateRole(button.name.Substring(4));      
        }
        //遍历所有孩子添加,给按钮添加点击时间
        private void AddEevent()
        {
            string name;
            for (int i=0;i<transform.childCount;i++)
            {
                name = transform.GetChild(i).name.Substring(4);
                //将游戏物体添加至字典当中
                //每次点击按钮,就将按钮的名字和游戏物体存入字典
                //避免重复点击按钮时,需要重复遍历
                for (int x=0;x<gameRole.Length;x++)
                {
                    if (gameRole[x].name == name)
                    {
                        dic.Add(name,gameRole[x]);
                    }
                }
                transform.GetChild(i).GetComponent<Button>().onClick
                    .AddListener(new UnityAction(GetButtonName));
            }
        }
        //创建游戏物体
        private void CreateRole(string name)
        {
            //如果vec有孩子,则销毁后再创建,如果没有则直接创建
            GameObject deleteClone;
            int childCount = vec.childCount;
            if (childCount==1)
            {
                //若是创建的游戏物体就是这个孩子,则不进行任何代码执行
                //因名字包含Clone,所以还需要对名字进行改变再判断
                //Debug.Log(vec.GetChild(0).name);
                if (vec.GetChild(0).name==(name+"(Clone)"))
                {
                    return;
                }
                deleteClone = vec.GetChild(0).gameObject;
                Destroy(deleteClone);
                SetParent(name);
            }
            else if (childCount == 0)
            {
                SetParent(name);
            }       
        }
        private void SetParent(string name)
        {
            GameObject clone = Instantiate(dic[name], vec.position, Quaternion.identity);
            Role = clone;
            //将创建的游戏物体设置为vic的子类
            clone.transform.SetParent(vec);
        }
    }
    
    • 武器选择功能
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    
    public class WeaponChose : MonoBehaviour
    {
        //创建武器位置
        private Transform weaponLocal;
        public GameObject[] weapons;
        private Dictionary<string, GameObject> dic;
        private void Start()
        {
            //字典进行初始化
            dic = new Dictionary<string, GameObject>();
            AddEvent();
            DicAddWeapon();
        }
        //遍历所有孩子,添加按钮点击事件
        /// <summary>
        /// 添加点击事件
        /// </summary>
        private void AddEvent()
        {
            for (int i = 0; i < transform.childCount; i++)
            {
                transform.GetChild(i).GetComponent<Button>().onClick
                    .AddListener(new UnityAction(CreateWeapon));
            }
        }
        //将所有武器类型添加进入字典当中
        private void DicAddWeapon()
        {
            string name;
            for (int i = 0; i < transform.childCount; i++)
            {
                name = transform.GetChild(i).name.Substring(4);
                for (int index = 0; index < transform.childCount; index++)
                {
                    if (name == weapons[index].name)
                    {
                        dic.Add(name, weapons[index]);
                    }
                }
            }
        }
        //点击事件
        //根据按钮的名字来创建武器
        /// <summary>
        /// 创建武器
        /// </summary>
        private GameObject clone;
        private void CreateWeapon()
        {
            //按钮名字
            string buttonName = EventSystem.current.currentSelectedGameObject.name.Substring(4);
            //给武器寻找位置
            weaponLocal = GameObject.Find("wphand").transform;
            if (weaponLocal != null)
            {
                //如果wphand不存在孩子,则直接创建,否则进行二次判断
                if (weaponLocal.childCount == 1)
                {
                    //如果孩子的名字就是所点击按钮的名字,那么就直接结束程序
                    if (weaponLocal.GetChild(0).name == (buttonName + "(Clone)"))
                    {
                        return;
                    }
                    //否则进行武器的创建,并销毁原来的物体
                    Destroy(clone);
                    SetParent(buttonName);
                }
                else
                    //进行名字切割并创建武器
                    SetParent(buttonName);
            }
            else Debug.Log("请先创建游戏角色");
        }
        private void SetParent(string buttonName)
        {
            clone = Instantiate(dic[buttonName], weaponLocal.position, Quaternion.Euler(180, -105, 0));
            clone.transform.SetParent(weaponLocal);
        }
    }
    
    • 服装选择功能
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    
    public class ChoseCloth : MonoBehaviour
    {
        /*
         * 需要先知道目前所选择的角色是谁,才能够进行衣服的选择
         *1、去HereCreate中获取创建的角色是谁
         *2、在人物创建时,给一个人物返回值Role即可
         *可用二维字典进行存储,第一个参数为角色,第二个参数为衣服号码
         */
        //获取的名字是带有Clone的,需要进行处理
        private GameObject role;
        public Texture[] cloths;
        private Dictionary<string, Dictionary<string, Texture>> dic;
       // private Renderer rend;
        //数据初始化
        private void Start()
        {
            dic = new Dictionary<string, Dictionary<string, Texture>>();       
            DicAddCloth();
            AddButtonEvent();
        }
        private void DicAddCloth()
        {
            int index = 0;
            //存储的种类名字,四种衣服
            string[] clothname=new string[4];
            string[] name;
            string newName = null;
            //遍历cloths数组,将其添加至二维数组
            foreach (Texture cloth in cloths)
            {
                //衣服名字格式为mon_goblinWizard_c2_df
                //将名字切割,取第二个goblinWizard,再加上(Clone),再为其添加衣服
                name = cloth.name.Split('_');
                if (Array.IndexOf(clothname, name[1])==-1)
                {
                    clothname[index++] = name[1];
                    dic.Add(name[1], new Dictionary<string, Texture>());
                    //Debug.Log("clothname:"+name[1]);
                }            
                dic[name[1]].Add((dic[name[1]].Count+1)+"", cloth);
               // Debug.Log(newName[1]);
            }
        }
        private void AddButtonEvent()
        {
            for (int i=0;i<transform.childCount;i++)
            {
                transform.GetChild(i).GetComponent<Button>().onClick.AddListener
                    (new UnityAction(ButtonEvent));
            }
        }
        /// <summary>
        /// 触发事件,更换衣服
        /// </summary>
        private void ButtonEvent()
        {
            //获取角色
            role = GenerateRole.Role;
            //根据按钮名字来更换衣服
            string buttonName = EventSystem.current.currentSelectedGameObject.name;
            //按钮名字格式为btn_col_02
            //获取最后一个数字即可        
            string clothName = buttonName.Substring(buttonName.Length-1);
            if (role != null)
            {
                //将role.name的名字进行切割
                string[] RoleName = role.name.Split('(');
                string[] RoleName01 = RoleName[0].Split('_');
                //Debug.Log("衣服名字"+clothName);
                //Debug.Log("角色名字" + role.name);
                //Debug.Log("种类名字:"+ RoleName01[1]);
                role.GetComponentInChildren<SkinnedMeshRenderer>().material.mainTexture
                = dic[RoleName01[1]][clothName];
            }
            else { Debug.Log("请先创建游戏角色"); }        
        }
    }
    
    • 动作预览功能
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.EventSystems;
    using UnityEngine.UI;
    
    public class ActionPlay : MonoBehaviour
    {
        /*
         * 动作按钮的播放设置
         */
        //获取游戏对象
        private GameObject role;
        private Animation ani;
        private void Start()
        {
            AddEvent();
        }
        //给每个按钮添加点击事件
        private void AddEvent()
        {
            for (int i=0;i<transform.childCount;i++)
            {
                transform.GetChild(i).GetComponent<Button>().onClick.
                    AddListener(new UnityAction(PlayAction));
            }
        }
        /// <summary>
        /// 播放动画
        /// </summary>
        private void PlayAction()
        {
            role = GenerateRole.Role;
            string buttonName = EventSystem.current.currentSelectedGameObject.name;
            string[] newName = null;
            if (role!=null)
            {
                ani = role.GetComponent<Animation>();
                newName = buttonName.Split('_');
                ani.Play(newName[newName.Length-1]);//字符串为按钮名字切割后的字符串
                ani.CrossFadeQueued("Idle");
            }
        }
    }
    

    人物模型连接(含UI贴图)------MonsterBaseTeam.rar
    其他功能的实现请见 Unity3D-----简易游戏项目开发02
    Unity3D-----简易游戏项目开发02

    展开全文
  • Unity3D游戏开发技术详解与典型案例 完整版 pdf
  • unity 3D期末大作业(免积分下载),坦克移动射击游戏,适合新手学习使用,游戏项目详情请看我的文章
  • 分享一点学习unity3D游戏开发的学习心得,让大家能少走一点弯路,
  • Unity3d 5.x 滚动小球 完整项目 demo 亲测用Unity3D5.5.1可以打开
  • unity3d小游戏案例 Roll A Ball 项目和源码以及美术资源等等 非常适合刚刚入门unity3d游戏开发的新手学习和使用
  • Unity3d显示计时器(游戏运行时间、录制时长等)功能(项目源码) 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/117823203

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,354
精华内容 8,541
关键字:

unity3d游戏项目