unity3d中如何用脚本创建对象或者类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d中如何用脚本创建对象或者类相关的知识,希望对你有一定的参考价值。

参考技术A 你要创建什么对象?如果是unity3d中的物体那是可以的,如果是脚本,不好意思,没见过动态创建脚本的,因为unity3d与其他引擎最大的不同在于它的gameobject和脚本使用方式,unity3d中脚本生效是通过挂载在物体上实现的。
只能动态的将写好的脚本添加到物体上,无法动态的新建脚本
//给游戏物体添加名为FoobarScript的脚本
var fbs : FoobarScript;
fbs = gameObject.AddComponent(FoobarScript);

这是js写法
public FoobarScript fbs;
public void Awake()
fbs = gameObject.AddComponent();


这是C#写法追问

其实我需要的只是利用unity3d这个载体来计算一些我需要的数据,并不涉及到其具体的物体脚本的加载问题,比如说我只是想建立一个跟在C++中一样的class或者struct 按你的意思不能这样做 那请问有什么其他的方法吗?谢谢!

追答

class和struct都可以写的,但是只支持js,C#
你可以直接写一个脚本,然后动态添加到物体上让他生效

追问

JS里可以写 但是一旦放在unity3d中就会出现问题

追答

肯定是你的写法有问题,你把脚本的报错贴出来看看

追问

那你帮忙写一个自定义类(随便写一个 主要是格式)啊 看看是不是跟我写的一样

参考技术B   方法是:
  using UnityEngine;
  using System.Collections;
  public class MainPlayer : MonoBehaviour
  // Use this for initialization
  void Start ()
  
  // Update is called once per frame
  void Update ()
  
  
  

visual c++中如何用CreateWindow函数创建状态栏

vs2010编译环境我看了一下commctrl的定义,其中有statusbar但不知道如何创建

#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <tchar.h>

#define WINDOW_CLASS_NAME _T("WINCLASS1")

LRESULT CALLBACK WindowProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)

PAINTSTRUCT ps;
HDC hdc;
switch(msg)

case WM_CREATE:

return(0);

break;
case WM_PAINT:

hdc=BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return(0);

break;
case WM_DESTROY:

PostQuitMessage(0);
return(0);

break;
default:
return( DefWindowProc( hwnd, msg, wparam, lparam ));



HWND DoCreateStatusBar(HWND hwndParent,//主窗口句柄
int nStatusID, //状态栏标识符
HINSTANCE hinst,//应用程序实例
int nParts //状态栏分为的份数
)

HWND hwndStatus;
RECT rcClient;
HLOCAL hloc;
LPINT lpParts;
int i, nWidth;

//加载动态连接库
InitCommonControls();
//创建状态栏
hwndStatus = CreateWindowEx(
0,
STATUSCLASSNAME,
(LPCTSTR) NULL,
SBARS_SIZEGRIP |
WS_CHILD | WS_VISIBLE,
0, 0, 0, 0,
hwndParent,
(HMENU) nStatusID,
hinst,
NULL);

GetClientRect(hwndParent, &rcClient);
hloc = LocalAlloc(LHND, sizeof(int) * nParts);
lpParts = (int*)LocalLock(hloc);

//计算状态栏中每部分的宽度
nWidth = rcClient.right / nParts;
for (i = 0; i < nParts; i++)

lpParts[i] = nWidth;
nWidth += nWidth;


//把状态栏分为几部分
SendMessage(hwndStatus, SB_SETPARTS, (WPARAM) nParts,
(LPARAM) lpParts);
LocalUnlock(hloc);
LocalFree(hloc);
//返回状态栏的句柄
return hwndStatus;


int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow)

WNDCLASSEX winclass;
HWND hwnd;
MSG msg;
winclass.cbSize =sizeof(WNDCLASSEX);
winclass.style =CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW;
winclass.lpfnWndProc=WindowProc;
winclass.cbClsExtra =0;
winclass.cbWndExtra =0;
winclass.hInstance =hinstance;
winclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
winclass.hCursor =LoadCursor(NULL,IDC_ARROW);
winclass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
winclass.lpszMenuName =NULL;
winclass.lpszClassName=WINDOW_CLASS_NAME;
winclass.hIconSm =LoadIcon(NULL,IDI_APPLICATION);

if(!RegisterClassEx(&winclass))
return(0);
if(!(hwnd=CreateWindowEx(NULL,
WINDOW_CLASS_NAME,
_T("Basic Window"),
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
0,0,
400,400,
NULL,
NULL,
hinstance,
NULL)))
return(0);

DoCreateStatusBar(hwnd,60105,hinstance,4);
ShowWindow(hwnd, SW_SHOWDEFAULT);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))

TranslateMessage(&msg);
DispatchMessage(&msg);

return(msg.wParam);


用windows api创建状态栏
项目,属性,链接器,输入,附加依赖项把comctl32.lib加进去。
参考技术A 状态栏的创建你看下MFC单文档视结构,的FRAM.CPP,有如下程序 if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))

TRACE0("Failed to create status bar\n");
return -1; // fail to create
其中m_wndStatusBar就是statusbar的对象,m_wndStatusBar.Create(this)//意思就是给框架窗创建状态栏m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) //应该设置状态栏大小 具体看MSDN
参考技术B 你新建一个单文档程序,然后在在单文档的程序中有创建状态栏的代码,具体的我忘记了,好像在OnCreate里呢,补充:你可以参考里面的,然后写在你的消息泵中啊 参考技术C m_wndStatusBar.Create(this) ||

以上是关于unity3d中如何用脚本创建对象或者类的主要内容,如果未能解决你的问题,请参考以下文章

在Java中如何用一个对象的一个属性返回该对象

在Unity3D中,如何用脚本把对象加到另个对象下面,成为子对象

在c++中如何用new生成一个构造函数带参数的类数组?

在html页面中如何用js调用java类

API 请求返回两个对象:Redux 中如何用一个 Reducer 分离状态?

如何用unity3d编写javascript